TCP远程控制
TCP协议:是可靠的,面向对象的,但是传输效率比较低
使用Socket类
会使用ServerSocket类
TCP客户端:
用来发送请求,再显示远程桌面面板,面板要有要连接IP地址,端口号。再给按钮添
加监听器
MyListener mlis =new MyListener();
btn.addActionListener(mlis);
//按钮监听器
class MyListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
//获得Ip@端口
String ip = ipField.getText();
String port = portField.getText();
int intPort = Integer.parseInt(port);
try{
//创建客户端套接字,连接服务端
Socket socket =new Socket(ip,intPort);
//不停的接受服务端发来的图片
RecieveThread rt =new RecieveThread(socket,panel);
rt.start();
}catch(Exception e1){
//弹出错误提示框
JOptionPane.showMessageDialog(null,"网络异常,无法连接服务器!");
e1.printStackTrace();
}
}
}
}
// 从Socket上获得输入流
InputStream ips = socket.getInputStream();
// 由于接受的是对象流
ObjectInputStream ois = new ObjectInputStream(ips);
while (true) {
// 读取对象,由于发送的是ImageIcon,这里可以强制转型成ImageIcon
Object obj = ois.readObject();
ImageIcon icon = (ImageIcon) obj;
//获得图像大小(即为服务端桌面大小)
int width = icon.getIconWidth();
int height = icon.getIconHeight();
//修改panel大小为服务端桌面大小
panel.setPreferredSize(new Dimension(width,height));
//获得画布
Graphics g = panel.getGraphics();
g.drawImage(icon.getImage(), 0,0, null);
TCP服务端:
接收客服端的请求:
// 初始化服务端的方法
public void initServer() throws IOException {
// 创建服务端套接字对象
ServerSocket server = new ServerSocket(10010);
System.out.println("服务器已经启动,等待连接");
// 等待客户端连接,如果有客户端连接上,会收到客户端套接字
Socket socket = server.accept();
System.out.println("一个客户端连上了"+socket.getRemoteSocketAddress());
// 启动一个线程来给客户端发送服务端桌面
SendThread st = new SendThread(socket);
st.start();
//从套接字上获得输出流
OutputStream ops = socket.getOutputStream();
//包装成对象流
ObjectOutputStream oos = new ObjectOutputStream(ops);
// 创建一个机器人对象,用来截屏
Robot robot = new Robot();
while (true) {
// 获得屏幕的分辨率
Toolkit tool = Toolkit.getDefaultToolkit();
Dimension dim = tool.getScreenSize();
// 要截取的起始点
Point p = new Point(0, 0);
// 指定截取的区域
Rectangle rect = new Rectangle(p, dim);
// 开始截屏,获得截取到的图像
BufferedImage img = robot.createScreenCapture(rect);
//由于BufferedImage没有实现序列化,不能写到IO中
//将BufferedImage包装成可写入IO的图像对象
ImageIcon icon = new ImageIcon(img);
//写出对象
oos.writeObject(icon);
oos.flush();
UDP的传输:
UDP发送数据:
public static void main (String[] args)throws Exception {
//发件人的地址与发件人实例化
SocketAddress sendAdd = new InetSocketAddress("127.0.0.1",9091);
//收件人的地址
SocketAddress address = new InetSocketAddress("127.0.0.1",9090);
//用来发送数据包的套接字(快递员)
DatagramSocket socket = new DatagramSocket(sendAdd);
int num =0 ;
while(true){
num++;
String ems="我是快递UDP";
byte[] bnf= ems.getBytes();//吧字符串转换成字节类型
Thread.sleep(1000);
//创建一个要发送的数据包(包裹)
DatagramPacket packet =new DatagramPacket(bnf, bnf.length, address);
//发送数据包
socket.send(packet);
UDP接收数据:
//接受方的地址
SocketAddress receiveAdd= new InetSocketAddress ("127.0.0.1",9090);
//创建接收数据的套接字(快递员)
DatagramSocket socket = new DatagramSocket(receiveAdd);
int num =0;
while(true){
num++;
Thread.sleep(1000);
byte [] buf = new byte[1024];
//创建数据包对象
DatagramPacket packet =new DatagramPacket(buf ,buf.length);
//接收数据包,数据就会被存在buf数组中
socket.receive(packet);
String str = new String(buf);
System.out.println(str.trim());
总结:tcp协议和udp协议的区别
TCP UDP
是否连接 面向连接 面向非连接
传输可靠性 可靠 不可靠
应用场合 传输大量数据 少量数据
速度 慢 快
分享到:
相关推荐
【TCP/UDP服务管理器】是一款实用的网络通信测试工具,专为IT专业人士设计,用于管理和测试基于TCP和UDP协议的网络服务。该工具具备双重功能,既可以作为服务器端进行监听,等待客户端的连接,也可以作为客户端主动...
Tcp 协议支持多种服务类型,如文件传送协议 FTP、RLogin 远程登录、SMTP POP3 电子邮件、NFS 网络文件系统、远程打印、远程执行、名字服务器、终端服务器等。 Tcp 协议的工作原理是通过三个报文段完成连接的建立,...
3. 传输层:TCP(传输控制协议)和UDP(用户数据报协议)位于这一层。TCP提供可靠的数据传输,包括连接管理、序列号、确认应答和流量控制等机制;UDP则为无连接服务,适合实时性要求高的应用。在C8051上,要实现这些...
在C/C++中,利用Winsock API进行TCP和UDP编程,首先需要包含头文件`winsock2.h`,然后在链接器设置中加入`wsock32.lib`作为依赖库。下面是一些基本的步骤: 1. **初始化Winsock**:调用`WSAStartup`函数启动Winsock...
### 知识点二:TCP与UDP协议对比 #### 2.1 TCP协议 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP/IP协议族中,TCP负责在应用程序之间提供可靠...
9.3 理解传输控制协议(TCP) 81 9.3.1 TCP头结构 81 9.3.2 TCP做什么 83 9.4 理解用户数据报协议(UDP) 85 9.4.1 UDP头结构 85 9.4.2 UDP能做什么 85 9.4.3 TCP和UDP 86 9.5 小结 86 第10章 IPv6 87 10.1 IPv6数据报 ...
对于UDP协议,参数应设置为AF_INET(表示IPv4)、SOCK_DGRAM(表示UDP)和0(或IPPROTO_UDP)。接着,使用`bind()`函数将套接字绑定到本地地址和端口。为了实现全双工通信,需要创建两个套接字,可能需要使用`...
而且结合大量实例讲述了TCP/IP协议包的定义原因及在各种不同的操作系统中(如Sunos4.1.3、Soloris2.2、AIX3.2.2)的应用与工作方式,这样可以以动态方式讲述TCP/IP的知识,使读者可以轻松掌握TCP/IP的知识:路由协议...
TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的网络通信协议。TCP是一种面向连接的、可靠的协议,而UDP则是无连接的、不可靠的协议。jsTerm不仅支持串行端口,还支持通过TCP和UDP进行网络通信。开发者可以...
9.3 理解传输控制协议(TCP) 81 9.3.1 TCP头结构 81 9.3.2 TCP做什么 83 9.4 理解用户数据报协议(UDP) 85 9.4.1 UDP头结构 85 9.4.2 UDP能做什么 85 9.4.3 TCP和UDP 86 9.5 小结 86 第10章 IPv6 87 10.1 IPv6数据报 ...
第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的输出 174 18.2.2 ...
第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的输出 174 18.2.2 ...
第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的...
首先,我们需要了解TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的网络通信协议。TCP是一种面向连接的、可靠的协议,它确保数据的正确顺序和完整性,而UDP则是无连接的、不可靠的协议,速度快但不保证数据...
第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的输出 174 18.2.2 ...
第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的输出 174 18.2.2 ...
第17章 TCP:传输控制协议 170 17.1 引言 170 17.2 TCP的服务 170 17.3 TCP的首部 171 17.4 小结 173 第18章 TCP连接的建立与终止 174 18.1 引言 174 18.2 连接的建立与终止 174 18.2.1 tcpdump的输出 174 18.2.2 ...
4. **UDP协议**:用户数据报协议(UDP)是另一种传输层协议,它不提供连接或可靠性保证,但速度快,适用于实时应用。8051上的UDP源码将处理UDP报文的封装和发送。 5. **DNS协议**:域名系统(DNS)用于将域名转换为...