刚开始学习UDP,写了一个小例子,结果接收端接收不到信息,求解答
发送端代码如下:
接收端代码如下:
package Day23.Internet;
import java.awt.event.HierarchyEvent;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
//发送端
public class Demo2Sender {
public static void main(String[] args) {
// 发送端的使用步骤
DatagramSocket datagramSocket = null;
DatagramPacket datagramPacket = null;
// 1.建立UDP服务
try {
datagramSocket = new DatagramSocket();
System.out.println("建立UDP服务成功!!");
} catch (SocketException e) {
e.printStackTrace();
}
// 2.准备数据,把数据封装在数据包中
// 在数据包里面应该表明是给谁的
String data = "这是一个UDP的例子。。。";
// DatagramPacket datagramPacket = new DatagramPacket(buf, length,
// address, port)
// buf:发送的字节数组;length:发送的数据内容的大小;address:发送的目的IP地址对象;port:端口号;
try {
datagramPacket = new DatagramPacket(data.getBytes(), data.getBytes().length, InetAddress.getLocalHost(),
60090);
System.out.println("建立数据包成功!!");
} catch (UnknownHostException e) {
e.printStackTrace();
}
// 3.货物装好了发货了
// 调用udp的服务发送数据包
try {
datagramSocket.send(datagramPacket);
System.out.println("发送成功!!");
} catch (IOException e) {
e.printStackTrace();
}
// 4.关闭资源-----实际上就是释放占用的端口号
if (datagramSocket != null) {
datagramSocket.close();
System.out.println("关闭成功");
System.out.println("hehe");
}
}
}
接收端代码如下:
package Day23.Internet;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
//接收端
public class Demo2Receiver {
public static void main(String[] args) throws IOException {
DatagramSocket socket = null;
DatagramPacket datagramPacket = null;
// 1.建立一个UDP的服务
try {
socket = new DatagramSocket(60090);
System.out.println("建立UDP服务成功!!");
} catch (SocketException e) {
e.printStackTrace();
}
System.out.println("hehe");
byte[] buf = new byte[1024];
// 2. 准备空的数据包用于存放数据
datagramPacket = new DatagramPacket(buf, buf.length);
// 3.调用udp的服务接受数据
socket.receive(datagramPacket);// receive方法是一个阻塞类型的方法,在没有接收到数据前是阻塞的
// 数据实际上是存储到了buf的字节数组中
System.out.println("数据包接收数据成功!!");
System.out.println("接收端接收到的数据是:" + new String(buf, 0, datagramPacket.getLength()));
// 4.关闭资源
if(socket!=null)
socket.close();
}
}
...全文
相关推荐
Java2实用教程(第5版)习题解答及例子代码.zip
通过实例代码,学习者可以学习如何进行TCP和UDP通信。通过深入理解和实践这些知识点,学习者不仅可以掌握Java编程的基础,还能为高级主题如JDBC、JavaFX、JavaEE等打下坚实基础。
第06章 UDP应用编程习题解答.pdf
广播地址用于向同一子网内的所有设备发送信息,而全局广播地址255.255.255.255则会被所有网络设备接收,但由于路由机制,通常只限于本地网络。广播和组播是两种多播技术。
TCP、UDP 端口测试工具
利用此工具,用户可以检查UDP端口是否能正常接收和发送数据,这对于评估网络性能和诊断问题至关重要。端口测试工具通常包含以下功能:1.
第06章 UDP应用编程习题解答.docx
这样,应用程序可以灵活地控制接收哪些组播数据。综上所述,UDP 和 TCP 在应用中各有优劣,根据不同的需求选择合适的协议。
UDP.rar_udp 多客户
vector是一个动态数组,可以方便地进行插入和删除操作,并且其元素在内存中是连续存储的,有利于数据的快速访问。在这种群聊软件中,vector可能用于存储客户端的连接信息、接收到的消息等。


