简单的TCP远程控制-客户端控制服务端
TCP的传输是可靠地,面向对象的,同时传输效率比较低。
TCP的远程控制需要用到两个套接字,客户端套接字:Socket ;服务端套接字:ServerSocket
远程控制服务端:
创建服务端的套接字
ServerSocket sever = new ServerSocket(端口号);
等待客户端的连接,一单有客户端连接,就会自动接收客户端套接字
Socket socket = server.accept();
此时的客户端需要做两件事,启动一个发送线程,将服务端的信息发送给客户端;另外,还要不停接收客户端传过来的信息指令。
1、接收线程:
在接收客户端数据时,需要用到Robot类,该类控制鼠标和键盘的应用系统生成的本机系统的输入事件
Robot robot = new Robot();
取得scoket的输入流,包装成对象输入流接收,将传过来的数据看成一个个对象
远程控制桌面,接收的数据有:鼠标的位置坐标,动作,参数。由于系统的参数,与客户端得到的鼠标按下键的值不一样,要进行转换。
鼠标的参数用int num 接收
定义一个int mask = Input Event.BUTTON1_MASK;
if(num = MouseEvent.BUTTON1){
mask = InputEvent.BUTTON1_MASK;
}else if(num = MouseEvent.BUTTON2){
mask = InputEvent.BUTTON2_MASK;
}else if(num = MouseEvent.BUTTON3){
mask = InputEvent.BUTTON3_MASK;
}
根据得到的鼠标动作,确定是按下还是松开还是移动;根据接收到鼠标的位置坐标 X ,Y ,将光标移到指定位置;根据鼠标参数,按下对应的鼠标按键
if("pressed".equals(type)){
//移送光标到x,y
robot.mouseMove(x,y);
//按下对应的鼠标按键
robot.mousePress(mask);
}else if("released".equals(type)){
robot.mouseMove(x,y);
robot.mouseRelease (mask);
}else if("move".equals(type)){
robot.mouseMove(x,y);
}
2、发送线程
从套接字获取输出流, 包装成对象流输出,创建Robot对象,用于截图
截图之前,需要先获取电脑屏幕的分辨率
//获取默认工具包
Toolkit tool = Toolkit.getDefaultToolkit();
Dimension dim = tool.getScreenSize();
确定截取的起始位置
Point p = new Point(0,0);
截取的矩形区域
Rectangle rect = new Rectangle(p,dim);
开始截屏,截取得到图片, BufferedImage 具有可访问图像数据缓冲区的 Image,BufferedImage 对象的左上角坐标都为 (0, 0)。
BufferedImage img = robot.createScreenCapture(rect);
由于BufferedImage没有实现序列化,所以不能写到IO中。将BufferedImage包装成可以写入IO的图像对象
ImageIcon icon = new ImageIcon(img);
清空缓存,由于需要不停的截图,所以可以加上while 循环,设定睡眠时间,给线程喘口气的机会
远程控制客户端:
写一个简单的界面接收服务端传过来的图片,设置一个连接按钮盒连接服务器 的IP和端口的文本框
给按钮添加一个监听器
创建客户端套接字,从界面获取IP和端口
Socket socket = new Socket(ip,Port);
包装对象流输出
启动一个线程,不停接收服务端发来的图片
创建对象输入流
创建接收对象
Object obj = ois.readObject();
由于发送的是ImageIcon ,需要强转为ImageIcon
ImageIcon icon = (ImageIcon) obj;
获得图像的大小,即为服务端桌面大小
修改面板的大小,设置为服务端桌面大小
获得画布,在panel上画出得到的图像
Graphics g = panel.getGraphics();
g.drawImage(icon.getImage(),0,0, null);
添加鼠标监听器:实现MouseListener,MouseMotionListener 接口
将鼠标按下,松开,移动时的鼠标动作和位置,按键值 对象流的方式输出
//得到鼠标位置
int x = e.getX();
int y = e.getY();
//得到鼠标按下的是哪个键
int num = e.getButton();
String type = "pressed";
if(oos!=null){
try {
oos.writeInt(x);
oos.writeInt(y);
oos.writeInt(num);
oos.writeObject(type);
oos.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
}
这样就实现了简单的远程控制,客户端可以控制服务端
分享到:
相关推荐
本套开源的远程控制客户端服务端源码提供了一种实现这一功能的基础框架,特别适合那些希望深入理解远程控制机制或者想要自定义远程控制解决方案的开发者。 UltraVNC是一款广泛应用的远程控制软件,其源码包含在...
在IT行业中,远程控制服务端和客户端是一种常见的技术,它允许用户通过网络对另一台设备进行操作,就像坐在那台设备前一样。本资源提供的是一套C#编写的远程控制服务端和客户端的完整源码,这对于学习和开发相关应用...
在STM32上,设置TCP服务器可以为其他设备提供服务,如数据上传、远程控制等。 在实际开发中,首先使用STM32CubeMX配置好STM32F429IGT6的时钟、中断、网络等设置,然后生成HAL库代码。接着,根据需求编写TCP客户端和...
服务端通常模拟一个设备,接收并处理来自客户端的请求,而客户端则扮演发起通信的角色,可以发送控制命令或请求信息。 服务端部分可能包含以下功能: 1. 接收并解析客户端的连接请求。 2. 实现协议规定的各种服务...
Java远程控制服务端和客户端源代码是利用Java内置的网络编程和GUI自动化工具包来实现的一种跨网络的交互功能。这种技术的核心在于`java.net.*`和`java.awt.robot.*`这两个包,它们分别提供了网络通信和模拟用户操作...
1. **模拟客户端和服务端**:用户可以设置本地端口,模拟TCP客户端或服务端,与远程服务器进行交互。 2. **数据收发**:记录和显示所有发送和接收的数据,支持自定义发送数据,方便测试特定场景。 3. **实时监控**:...
本项目基于QT和Windows API实现了一套完整的远程桌面控制系统,包括客户端和服务端,利用了VLC-Qt库来处理屏幕画面的传输与显示。 首先,QT是一个流行的开源C++图形用户界面框架,它提供了丰富的组件和工具,使得...
本教程将详细讲解如何在Linux环境下实现TCP远程控制,包括客户端与服务器端的通信机制。 首先,理解TCP的基本概念至关重要。TCP通过三次握手建立连接,确保数据传输前双方都已经准备好。在握手过程中,客户端发送一...
TCP/IP传输文件远程控制聊天室是一种基于C/S(Client/Server)开发模型的网络应用程序,它允许客户端通过网络与服务器进行交互,实现文件的上传和下载,以及远程控制功能。在此系统中,服务端能够同时处理最多10个...
在实际项目中,Qt的TCP通信功能常用于设备通信、数据同步、远程控制等多种场景。例如,一个桌面应用可能作为TCP服务器,接收移动设备或其他客户端发送的控制指令;反之,移动应用也可以作为客户端,通过TCP连接到...
在IT领域,网络通信是不可或缺的一部分,而Java Socket编程则是实现网络通信的一种常见方式,尤其...通过学习和实践这些基本概念,开发者可以为各种网络应用场景,如聊天系统、文件传输、远程控制等,打下坚实的基础。
标题中的“telnet-TCP服务端程序-远程登录MCU”指的是使用TCP协议的Telnet服务,用于远程登录并管理微控制器单元(MCU)。这是一个常见的网络通信协议,允许用户通过网络连接到另一台设备(在这种情况下是MCU),...
本项目提供了VC++实现的远程控制客户端和服务端的源码,非常适合初学者了解和实践网络编程知识。 远程控制的核心是通过网络传输指令和数据,使客户端能够实时看到服务端的屏幕,并对其进行操作。在VC++环境下,这...
在PLC的TCP通信中,服务端通常是指PLC本身,而客户端则是与PLC进行数据交互的上位机或远程设备。 1. 创建PLC服务端程序: 在汇川PLC中,建立服务端程序需要配置网络参数,包括IP地址、端口号等。服务端程序会监听...
在这个TCP服务器VI中,VI服务器作为服务端的核心,对外提供接口,接收客户端的连接请求并处理数据。 2. **TCP通信**:TCP协议确保了数据的可靠传输,通过建立三次握手的连接,保证了数据的顺序性和无丢失。在...
该视频聊天室源码是一个完整的解决方案,包含了服务端、客户端以及网站程序的组成部分,用于构建一个实时的在线视频交流平台。下面将详细讲解这个源码中的关键知识点。 1. **服务端开发**: - **网络协议**:...
【标题】"VC++实现——远程实时控制计算机 源代码"揭示了使用Microsoft Visual C++编程语言开发的远程控制软件技术。这类软件允许用户通过网络连接操控另一台计算机,实现远程桌面协作、文件传输、命令执行等功能。...
标题中的"服务器端和客户端源代码"表明,这个压缩包中包含了实现远程控制服务端和客户端的全部源代码。开发者可以通过阅读和分析这些代码,学习如何构建一个完整的远程控制系统。通常,服务器端会包含监听和管理...
在ESP32上实现TCP服务端和客户端,可以让我们创建自己的物联网应用,如远程控制、数据交换或设备监控系统。 1. ESP32 TCP服务端程序: ESP32作为TCP服务器,会监听特定的端口等待客户端的连接请求。服务端通常包含...
VB TCP通信示例是基于Visual Basic 6.0(VB6.0)的网络...在实际应用中,TCP通信可以应用于聊天程序、文件传输、远程控制等多个领域。在使用这些源码时,要注意遵守相关法律法规,尊重知识产权,并确保代码的安全性。