您的位置:首页 > 其它

使用Socket,让连接客户端可以对服务端执行相应的指令

2017-02-16 00:45 330 查看
我们都知道使用Socket套接字,可以让客户端来连接服务端,并提供相应的服务。那现在不仅如此,这里我们让连接的客户端能够在服务端执行相应的指令,并返回相应的执行结果

1、知识准备

1. Socket的使用,这部分可以读下列的文章。

http://blog.csdn.net/franky_jie/article/details/54987285

http://blog.csdn.net/franky_jie/article/details/55061435

2. 这里引用一个新的类



这里这个类有一个方法,可以生成一个进程对象



这里这个exec方法就可以用来执行我们想要的指令

2、实例操作

public static void test3() {
try {
ServerSocket serverSocket = new ServerSocket(8888);
while(true){
Socket socket = serverSocket.accept();
System.out.println(socket.getInetAddress());
PrintWriter clientPw = new PrintWriter(socket.getOutputStream());
Scanner clientSc = new Scanner(socket.getInputStream());
clientPw.println("请输入的你要执行的指令");
clientPw.flush();
while(clientSc.hasNextLine()){
try{
String command = clientSc.nextLine();
System.out.println(command);
//这里的这个cmd /c 参数表示在命令行下执行,执行完毕后关闭命令行并输出结果
Process p = Runtime.getRuntime().exec("cmd /c"+command);
String content = "" ;
Scanner psi = new Scanner(p.getInputStream());
while(psi.hasNextLine()){
content+=psi.nextLine()+"\r\n";
}
System.out.println("执行的结果"+content);
clientPw.println(content);
clientPw.flush();
Scanner pse = new Scanner(p.getErrorStream());
String errcontent = "" ;
while(pse.hasNextLine()){
errcontent+=pse.nextLine()+"\r\n";
}
if(!errcontent.equals("")){
clientPw.println(errcontent);
clientPw.flush();
System.out.println(errcontent);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}

}


这样,就可以使用Socket,让连接客户端可以对服务端执行相应的指令。

3、结果截图

这里我们用Windows自带的telnet来连接这个客户端



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  socket
相关文章推荐