import java.net.*;
import javax.swing.*;
import java.awt.event.*;
class 主机1Frame extends JFrame implements Runnable,ActionListener
{ JTextField out_message=new JTextField("发送数据到主机2:");
JTextArea in_message=new JTextArea();
JButton b=new JButton("发送数据包到主机2");
主机1Frame()
{ super("我是主机1");
setSize(200,200);setVisible(true);
b.addActionListener(this);
add(out_message,"South");add(in_message,"Center");add(b,"North");
Thread thread=new Thread(this);
thread.start();//线程负责接收数据包
}
public void actionPerformed(ActionEvent event) //点击按扭发送数据包
{ byte buffer[]=out_message.getText().trim().getBytes();
try{ InetAddress address=InetAddress.getByName("127.0.0.1");
DatagramPacket data_pack=
new DatagramPacket(buffer,buffer.length, address,888);
DatagramSocket mail_data=new DatagramSocket();
in_message.append("数据报目标主机地址:"+data_pack.getAddress()+"\n");
in_message.append("数据报目标端口是:"+data_pack.getPort()+"\n");
in_message.append("数据报长度:"+data_pack.getLength()+"\n");
mail_data.send(data_pack);
}
catch(Exception e){}
}
public void run() //接收数据包
{ DatagramPacket pack=null;
DatagramSocket mail_data=null;
byte data[]=new byte[8192];
try{ pack=new DatagramPacket(data,data.length);
mail_data=new DatagramSocket(666);
}
catch(Exception e){}
while(true)
{ if(mail_data==null) break;
else
try{ mail_data.receive(pack);
int length=pack.getLength();
InetAddress adress=pack.getAddress();
int port=pack.getPort();
String message=new String(pack.getData(),0,length);
in_message.append("收到数据长度:"+length+"\n");
in_message.append("收到数据来自:"+adress+"端口:"+port+"\n");
in_message.append("收到数据是:"+message+"\n");
}
catch(Exception e){}
}
}
}
public class 主机1
{ public static void main(String args[])
{ 主机1Frame 主机1win=new 主机1Frame();
主机1win.validate();
}
}
Java codeimport java.net.*;
import javax.swing.*;
import java.awt.event.*;
class 主机2Frame extends JFrame implements Runnable,ActionListener
{ JTextField out_message=new JTextField("发送数据到主机1:");
JTextArea in_message=new JTextArea();
JButton b=new JButton("发送数据包到主机1");
主机2Frame()
{ super("我是主机2");
setSize(200,200);setVisible(true);
b.addActionListener(this);
add(out_message,"South");add(in_message,"Center");add(b,"North");
Thread thread=new Thread(this);
thread.start();//线程负责接收数据包
}
public void actionPerformed(ActionEvent event)
{ byte buffer[]=out_message.getText().trim().getBytes();
try{ InetAddress address=InetAddress.getByName("127.0.0.1");
DatagramPacket data_pack=
new DatagramPacket(buffer,buffer.length, address,666);
DatagramSocket mail_data=new DatagramSocket();
in_message.append("数据报目标主机地址:"+data_pack.getAddress()+"\n");
in_message.append("数据报目标端口是:"+data_pack.getPort()+"\n");
in_message.append("数据报长度:"+data_pack.getLength()+"\n");
mail_data.send(data_pack);
}
catch(Exception e){}
}
public void run()
{ DatagramSocket mail_data=null;
byte data[]=new byte[8192];
DatagramPacket pack=null;
try{
pack=new DatagramPacket(data,data.length);
mail_data=new DatagramSocket(888);
}
catch(Exception e){}
while(true)
{ if(mail_data==null) break;
else
try{ mail_data.receive(pack);
int length=pack.getLength();
InetAddress adress=pack.getAddress();
int port=pack.getPort();
String message=new String(pack.getData(),0,length);
in_message.append("收到数据长度:"+length+"\n");
in_message.append("收到数据来自:"+adress+"端口:"+port+"\n");
in_message.append("收到数据是:"+message+"\n");
}
catch(Exception e){}
}
}
}
public class 主机2
{ public static void main(String args[])
{ 主机2Frame 主机2win=new 主机2Frame();
主机2win.validate();
}
}
分享到:
相关推荐
UDP传输的优点是快捷,因为它是没有安全保证的。有一定的丢失率。而且,由于各包的传输路径不同,后发送的包可能先于先发送的包到达。所以,如果发送大量的数据,就需要进行检错。当然,还得保证快捷的传输。 我就是...
Java UDP视频传输是一种基于用户数据报协议(User Datagram Protocol)的实时数据传输方式。UDP相较于TCP,具有更低的延迟和更高的传输效率,因为其不保证数据包的顺序、不进行重传,所以适用于对实时性要求高的应用...
以上就是Java实现UDP协议传输数据的基本流程。在实际应用中,可能需要考虑错误处理、多线程(分别处理发送和接收)、数据格式的解析和序列化等问题。对于初学者来说,理解这些基本概念并逐步实践是非常重要的,而...
【标题】基于Java的UDP数据传输 在计算机网络通信中,UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输层协议,它提供了比TCP(Transmission Control Protocol,传输控制协议)更快的...
Java网络编程中,UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,它在TCP/IP协议栈中位于传输层。与TCP相比,UDP更轻量级,速度快,适合于对实时性要求较高的应用,如视频通话、在线游戏等。本篇...
Java UDP(用户数据报协议)收发结构体实例与Socket编程是网络通信中的重要主题,尤其是在需要高效、无连接的数据传输场景下。UDP是一种无连接的传输层协议,相较于TCP,它提供了更低的延迟和更高的吞吐量,但不保证...
UDP是面向非连接的,UDP传输的是数据报只负责传输信息,不保证信息一定收到,虽然安全性不如TCP(面向连接、用Socket进行通信),但是性能较好。 从简单到复杂,首先简单介绍一下怎么利用UDP实现客服端发送消息给...
总之,Java实现UDP协议的文件传输需要理解UDP的特点,并合理地处理数据分块、重组、错误检测和恢复等问题。通过这样的实现,我们可以构建一个简单但高效的实时文件传输系统,满足视频文件等大容量数据的快速传输需求...
这是udp数据包,用**捕获的,可以研究,一下对协议分析很有帮助,试试了
UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议,它是Internet协议簇中的一个部分。在Java中,我们可以使用Java套接字(Socket)API中的DatagramSocket类来实现UDP通信。这个API提供了发送和接收...
本示例关注的是如何利用Netty实现一个基于UDP(User Datagram Protocol)的数据接收服务,这在需要进行快速、无连接的数据传输场景中非常常见。以下是对这个主题的详细讲解: 首先,我们需要理解UDP的基础知识。UDP...
Java UDP(用户数据报协议)是网络编程中的一个重要部分,尤其在需要低延迟、无连接通信的场景下。本文将详细讲解如何使用Java来实现一个UDP广播监听器,以接收并处理UDP广播数据。 首先,我们需要理解UDP的基本...
本篇将详细阐述TCP和UDP协议的工作原理、特性以及它们在数据传输中的实现。 TCP,即传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。它通过三次握手建立连接,并在连接建立后进行数据传输,...
UDT(UDP-based Data Transfer Protocol)是为了解决TCP在大数据传输时的效率问题而设计的一种用户数据报协议(UDP)上...同时,这个项目也是研究可靠UDP传输的一个很好的实例,有助于提升对网络协议和系统设计的理解。
标题中的“UDP传输文件(java)”指的是使用Java编程语言实现基于用户数据报协议(User Datagram Protocol, UDP)的文件传输功能。UDP是一种无连接的、不可靠的传输层协议,它比TCP(传输控制协议)更轻量级,适合于...
Java基于UDP传输协议的简单聊天室是一个典型的网络编程示例,它涵盖了多个核心知识点,包括Java的Socket编程、用户数据报协议(UDP)以及JSON数据格式的使用。在这个项目中,我们将深入理解这些概念并探讨如何将它们...
下面将详细探讨Android UDP传输的实现及其相关知识点。 首先,我们要了解在Android中如何创建UDP套接字。Android系统提供了`java.net.DatagramSocket`类来处理UDP通信。创建一个UDP套接字可以使用`DatagramSocket()...
UDP是一种无连接的传输协议,常用于需要高效传输且对数据完整性要求不高的场景,如在线视频流、实时游戏等。该工具通常包含发送和接收UDP数据包的功能,帮助开发者检查网络通信的正确性。 在给定的压缩包`UdpSend...
UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议,它的设计目标是提供快速、简单且轻量级的通信方式。...提供的“提高UDP传输效率的小例子”应该包含具体的实现代码和说明,供学习者参考和实践。
在TCP/IP协议栈中,UDP提供了不可靠的数据传输服务,不保证数据包的顺序、不保证数据包的到达,也不进行流量控制和拥塞控制。这种特性使得UDP在某些场景下非常有用,例如实时视频流、在线游戏等对延迟敏感的应用。 ...