网络编程是指通过使用套接字来达到进程间相互通信的目的,狭义上的网络编程就是指在两台或两台以上的计算机之间传输数据。我们程序员发送到指定的位置,或者接收到指定的数据。在发送和接收数据时,大部分的计算机语言都设计了专门的API实现这些功能,而我们只需要调用即可。
在Java中,支持TCP网络编程的包是java.net包,以java.net包下面的Socket类代表客户端连接,ServerSocket类代表服务器连接。
在这里我们要实现远程控制还需要使用java.awt.robot类。通过网络实现对另一台计算机的远程控制,其实就是控制远程计算机的鼠标和键盘动作,还有一个就是要获取远程计算机屏幕的图像。
首先先讲一下思路:要实现远程控制一般有三个部分,分别是控制端、被控制端,还有一个服务端。这里为了简单,省略了服务端,将服务端和被控制端合到了一起。以下统称为大家熟悉的客户端和服务端。
客户端主要实现:
1、接受服务端发送过来的图片
2、监听事件,发送键盘事件和鼠标事件
服务端主要实现:
1、将电脑桌面发送到客户端
2、监听事件,发送键盘事件和鼠标事件
3、使用Robot类进行鼠标和键盘的自动化操作
具体实现
首先,两台计算机需要通过java.net.Socket进行连接。
服务端应该有一个ServerSocket,并且初始化输出流:
public static void main(String[] args) throws Exception { //实例化服务端监听 在 1234端口 ServerSocket sever = new ServerSocket(1234); System.out.println("服务器已经启动..."); Socket socket = sever.accept(); //等待接受请求 System.out.println("有客户已经连接"); DataOutputStream dataOut = new DataOutputStream(socket.getOutputStream()); }客户端应该有一个Socket去连接服务端,并且初始化输入输出流:
public static void main(String[] args) throws Exception, IOException{ Socket socket = new Socket("127.0.0.1",1234); DataInputStream dataIn = new DataInputStream(socket.getInputStream()); ObjectOutputStream objectOut = new ObjectOutputStream(socket.getOutputStream()); }
现在两台计算机已经连通了,接下来就需要具体实现数据的交换。由于我们的被控制端和服务端是和在一起的,按照我上面写的