java socket远程控制主机,执行命令
来源:互联网 发布:yum repolist卡死 编辑:程序博客网 时间:2024/06/05 04:10
socket server服务端代码
package com.core.servers;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;import java.util.HashSet;/** * @author zzq *服务端 */public class Servers extends Thread {Socket socket ;//使用该集合是用于存储ip地址的。static HashSet<String> ips = new HashSet<String>();public Servers(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {String ip = socket.getInetAddress().getHostAddress(); // socket.getInetAddress() 获取对方的IP地址if(ips.add(ip)){System.out.println("恭喜"+ip+"同学成功连接,当前下载的人数是:"+ ips.size());} DataInputStream in = new DataInputStream(socket.getInputStream()); System.out.println(in.readUTF());//这里 打印的是客户端发送的第0个writeUTF,搞了好久才发现这个问题 String exeResult = exeCmd(in.readUTF());//这里是第一个 就是输入的cmd DataOutputStream out = new DataOutputStream(socket.getOutputStream()); out.writeUTF("返回执行结果: " + exeResult + " \t Goodbye!");socket.close();}catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) throws IOException {//建立tcp的服务 ,并且要监听一个端口ServerSocket serverSocket = new ServerSocket(9090);//9090端口号System.out.println("等待客户端连接....");while(true){//不停的接受用户的链接。Socket socket = serverSocket.accept();new Servers(socket).start();}} /** * @param commandStr * @return * 调用dos命令 */ public static String exeCmd(String commandStr) { BufferedReader br = null; try { StringBuilder sb = new StringBuilder(); Process p = Runtime.getRuntime().exec(commandStr); br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; while ((line = br.readLine()) != null) { sb.append(line + "\n"); } // System.out.println(sb.toString()); sb.append(commandStr); return sb.toString(); } catch (Exception e) { return null; } finally { if (br != null) { try { br.close(); } catch (Exception e) { e.printStackTrace(); } } } } }
client代码
package com.core.client;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;/** * @author zzq *客户端 */public class Client { public static void main(String [] args) throws UnknownHostException { InetAddress serverName = InetAddress.getLocalHost();//这是ip地址,建议写配置文件 int port = 9090;//这是端口 try { Socket client = null; while (true) { client = new Socket(serverName, port); System.out.println("................请输入命令.................."); Scanner sc = new Scanner(System.in); String cmdStr = sc.nextLine(); OutputStream outToServer = client.getOutputStream(); DataOutputStream out = new DataOutputStream(outToServer); out.writeUTF("\n"); out.writeUTF(cmdStr); client.shutdownOutput(); InputStream inFromServer = client.getInputStream(); DataInputStream in = new DataInputStream(inFromServer); System.out.println(" 读取服务器返回" + in.readUTF()); client.close(); } }catch(IOException e) { e.printStackTrace(); } } }
可以多客户端,运行效果
1 0
- java socket远程控制主机,执行命令
- 远程主机执行命令
- 纯JAVA实现远程执行SSH2主机的SHELL命令
- JAVA实现远程执行SSH2主机的SHELL命令
- 教你如何通过ssh控制远程主机,远程执行命令
- Linux 自动登录远程主机执行命令
- 关于java执行命令的一些(调本地的命令 调远程主机的命令 在后台执行命令)
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- linux 下远程执行命令 socket实现
- java远程执行linux命令
- java远程执行linux命令
- java远程执行linux命令
- Java远程执行Linux命令
- java 远程执行linux命令
- expect转义符及远程主机执行命令
- Android Fragment之间的通信
- java设计模式大话之命令模式
- jquery.datatables添加跳转到指定页
- Merkle tree在区块链中的应用
- 微信与朋友圈后台架构
- java socket远程控制主机,执行命令
- android中读取properties文件
- jquery1.9 动态修改select的值
- Java基础之抽象类与接口
- 卡夫卡
- SPOJ MINSUB 二分+单调栈
- 解决超出打开游标的最大数异常ORA-01000 递归SQL 级别1 出现错误 最全方案-最全方案
- Sass的编译和单文件转换
- 音频知识之MP3文件结构解析