刚开始学习UDP,写了一个小例子,结果接收端接收不到信息,求解答

KingsleyAdam KingsleyAdam 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
发送端代码如下:

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();
}
}
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
KingsleyAdam
Java 51,407 成员 86,132 内容