初次尝试UDP实现,接收端接收不到信息

白砂糖番茄乐园 2020-04-21 10:47:23


接收端接收不到发送端的信息,我用DatagramSocket的getPort()方法试了一下,返回的是-1,API是这样解释的Returns -1 if the socket is not connected.

本人初学,查了好些资料都无法解决

发送端:
public class Client01 {
public static void main(String[] args) throws Exception{
System.out.println("发送端准备准备中");
//1. 使用DatagramSocket 指定端口,创建发送端
DatagramSocket client = new DatagramSocket(9999);
System.out.println(client.getPort());// 返回-1
//2. 准备数据,转化成字节数组
String msg = "今天27度";
byte[] data = msg.getBytes();
//3. 封装成DatagramPacket,需指定目的地
DatagramPacket p = new DatagramPacket(data, data.length,
new InetSocketAddress("localhost", 8888));
// 4. 发送包裹send(DatagramPacket p)
client.send(p);
//5. 释放资源
client.close();
}
}

接收端:
public class Sever01 {
public static void main(String[] args) throws Exception{
// 1. 使用DatagramSocket 指定端口,创建接收端
DatagramSocket server = new DatagramSocket(8888);
// 2. 准备容器 封装成DatagramPackets包裹
byte[] buf = new byte[1024*60];
DatagramPacket p = new DatagramPacket(buf, buf.length);
// 3. 阻塞式接受包裹receive(DatagramPacket p)
server.receive(p);
// 4. 分析数据
// byte[] getData()
byte[] data = p.getData();
// int getLength()
int len = p.getLength();
System.out.println(new String(data, 0, len));
// 5. 释放资源
server.close();
}
}
...全文
248 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
也没有报错,就是接收端一直阻塞状态
zhtoad 2020-04-21
  • 打赏
  • 举报
回复
UDP 能双向吗? 外网和局域网之间的。
  • 打赏
  • 举报
回复
解决了,应该先允许接收端,再允许发送端,学晕了

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧