Sockety na przykładzie aplikacji klient serwer, zdalne wysyłanie komend, JAVA
Aplikacja składa się z dwóch elementów, serwera i klienta. Serwer nasłuchuje na zdefiniowany porcie komendy. Klient wysyła do serwera komendy. Poniższy przykład użycia tego rozwiązania do zdalnego zamknięcia komputera (linux).
Przykład uruchomienia programu klienta, aby wsyłać komendę "reboot".
import java.io.*; import java.net.*; public class CommandListner { public static int port ; private ServerSocket server; private String command; public CommandListner(){ } public void start() { try { server = new ServerSocket(this.port); } catch (Exception err) { System.out.println("ssss"+err); } try { while (true) { Socket client = server.accept(); BufferedReader r = new BufferedReader(new InputStreamReader(client.getInputStream())); PrintWriter w = new PrintWriter(client.getOutputStream(), true); do { try { command = r.readLine(); System.out.println("command: "+ command); Process pro = Runtime.getRuntime().exec(command) ; if ( command != null ) System.exit(0); } catch (IOException e) { System.err.println("ioexception starting process! " + e); } } while ( !command.trim().equals("bye") ); client.close(); } } catch (Exception err) { System.err.println(err); } } public static void main(String[] args){ CommandListner Cmd = new CommandListner(); if(args.length==0) Cmd.port = 9999; else Cmd.port = Integer.parseInt(args[0]); Cmd.start(); } }
import java.io.*; import java.net.*; /** * * @author marcin_mazurek */ public class CommandSender { private static int port; private static String ip, command; public static void main(String[] args) { if(args.length<2){ System.out.println("Usage: IP PORT COMMAND"); System.exit(0); } else{ ip = args[0]; port = Integer.parseInt(args[1]); command = args[2]; } try { Socket s = new Socket(ip, port); BufferedReader r = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter w = new PrintWriter(s.getOutputStream(), true); BufferedReader con = new BufferedReader(new InputStreamReader(System.in)); w.println(command); } catch (Exception err) { System.err.println(err); } } }
java -jar "CommandSender\dist\CommandSender.jar" 127.0.0.1 9999 "reboot"Przykład uruchomienia programu klienta, aby wsyłać komendę "halt".
java -jar "CommandSender\dist\CommandSender.jar" 127.0.0.1 9999 "halt"
Zobacz również
Dział:
Tagi: