在 java 中使用多播套接字时接收方法有问题。有一些主机希望使用多播套接字进行群聊。在每个主机上启动两个线程(读取和写入),并且它们都使用加入组 IP 的多播套接字。问题是当receive方法执行时,它没有返回之前从其他主机在它的写线程上发送的数据报包。这是什么问题?这是读取线程的运行方法中的一些代码:
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);
如果需要更多信息,请告诉我。