首页 文章

好像我的接收方法在java中的多播套接字上没有得到数据包

提问于
浏览
2

我在java中使用多播套接字时遇到了接收方法的问题 . 有些主机他们希望使用多播套接字进行群聊 . 每个主机上都启动了两个线程(读写),并且它们都使用连接到组IP的多播套接字 . 问题是,当receive方法执行时,它不会返回之前从其写入线程上的其他主机发送的数据报包 . 问题是什么?这里是read线程的run方法中的一些代码:

byte buff[]=new byte[576];
DatagramPacket DataPkt=new DatagramPacket(buff, 576);
MultiReadSocket.receive(DataPkt);
System.out.println("Datagram Packet: " + DataPkt);
ByteArrayInputStream bais = new ByteArrayInputStream(buff);
ObjectInputStream ois = new ObjectInputStream(bais);
MyPkt = (MyPacket)ois.readObject();

写线程的run方法中的代码:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(MyPkt);
DatagramPacket DataPkt = new DatagramPacket(baos.toByteArray(),    baos.toByteArray().length,InetAddress.getByName("235.0.0.2"), 2020);
MultiWriteSocket.send(DataPkt);

如果需要更多信息,请告诉我 .

1 回答

  • 1

    正如我在评论中提到的,很难确定在没有看到所有代码的情况下发生了什么,但似乎至少在“读取”场景中,您没有将多播套接字加入多播组 .

    有关详细信息,请参阅documentation for MulticastSocket . 在JavaDoc的顶部有一个很好的,简单的写入和读取示例 .

相关问题