Java Socket笔记-udpSocket简单收发包

Java Socket笔记-udpSocket简单收发包目录基本概念代码与实例基本概念这里主要是使用了 DatagramSock 可以打开本地端口 构建 Socket 同时这个类还可以给指定 IP 和端口发送数据包 如下 打开本地端口并接收数据 DatagramSock newDatagramS 2000 构建接收实体 finalbyte buf newbyte 512

目录

 

基本概念

代码与实例


 

基本概念

这里主要是使用了DatagramSocket可以打开本地端口,构建Socket,同时这个类还可以给指定IP和端口发送数据包。

如下,打开本地端口并接收数据:

DatagramSocket ds = new DatagramSocket(2000); //构建接收实体 final byte[] buf = new byte[512]; DatagramPacket receiverPack = new DatagramPacket(buf, buf.length); //接收 ds.receive(receiverPack);

接收到的数据会传给receiverPack。

同样如果是发送

DatagramPacket responsePacket = new DatagramPacket(responseDataBytes, responseDataBytes.length, receiverPack.getAddress(), receiverPack.getPort()); ds.send(responsePacket);

通过构造DatagramPacket指明IP和端口,就可以发送数据了

 

代码与实例

程序运行截图如下:

Java Socket笔记-udpSocket简单收发包

Java Socket笔记-udpSocket简单收发包

源码如下:

UDPProvider.java

import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPProvider { public static void main(String[] args) throws IOException { System.out.println("UDPProvider Started."); //接收者,指定接收数据 DatagramSocket ds = new DatagramSocket(2000); //构建接收实体 final byte[] buf = new byte[512]; DatagramPacket receiverPack = new DatagramPacket(buf, buf.length); //接收 ds.receive(receiverPack); //打印发送者信息 String ip = receiverPack.getAddress().getHostAddress(); int port = receiverPack.getPort(); int dataLen = receiverPack.getLength(); String data = new String(receiverPack.getData(), 0, dataLen); System.out.println("UDPProvider receive from ip: " + ip + "\tport: " + port + "\tdata: " + data); //构建一份回送数据 String responseData = "Receive data with len: " + dataLen; byte[] responseDataBytes = responseData.getBytes(); DatagramPacket responsePacket = new DatagramPacket(responseDataBytes, responseDataBytes.length, receiverPack.getAddress(), receiverPack.getPort()); ds.send(responsePacket); System.out.println("UDPProvider Finished!"); ds.close(); } } 

UDPSearcher.java

import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPSearcher { public static void main(String[] args) throws IOException { System.out.println("UDPSearcher Started."); //搜索方自动分配端口 DatagramSocket ds = new DatagramSocket(); //构建一份回送数据 String requestData = "Hello World"; byte[] requestDataBytes = requestData.getBytes(); //根据发送者构造一份回送信息 DatagramPacket requestPacket = new DatagramPacket(requestDataBytes, requestDataBytes.length); //本机2000端口 requestPacket.setAddress(InetAddress.getLocalHost()); requestPacket.setPort(2000); ds.send(requestPacket); //构建接收实体 final byte[] buf = new byte[512]; DatagramPacket receiverPack = new DatagramPacket(buf, buf.length); //接收 ds.receive(receiverPack); //打印发送者信息 String ip = receiverPack.getAddress().getHostAddress(); int port = receiverPack.getPort(); int dataLen = receiverPack.getLength(); String data = new String(receiverPack.getData(), 0, dataLen); System.out.println("UDPSearcher receive from ip: " + ip + "\tport: " + port + "\tdata: " + data); System.out.println("UDPSearcher Finished!"); ds.close(); } } 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231455.html原文链接:https://javaforall.net

(0)
上一篇 2025年12月12日 上午8:01
下一篇 2025年12月12日 上午8:22


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号