通过UDP多播发送长时间

时间:2012-10-22 18:09:56

标签: java udp multicast lan bufferunderflowexception

我正在尝试发送一个多播多播。 连接应该有效,因为可以发送一个String。

这是我的服务器端代码:

currentServerStatusId = Server.getServerStatusVersionId();
buf = ByteBuffer.allocate(8).putLong(currentServerStatusId).array(); //long should be 8 bytes in Java
InetAddress group = InetAddress.getByName(multicastAddress);
DatagramPacket packet = new DatagramPacket(buf, buf.length, group, port);
socket.send(packet);

这是在客户端(接收方):

byte[] buf = new byte[256];
serverIpPacket = new DatagramPacket(buf, buf.length);
System.out.println("waiting to receive");
multicastSocket.receive(serverIpPacket);
receivedIp = serverIpPacket.getAddress().getHostAddress();
currentServerStatusId = ByteBuffer.allocate(8).put(serverIpPacket.getData()).getLong();
//new String(serverIpPacket.getData(), 0, serverIpPacket.getLength());
System.out.println("received current ServerStatusId: " + currentServerStatusId);

这给了我一个BufferUnderflowException。 显然,当我在接收器/客户端的allocate方法中将大小从8加倍到16时,它确实有效。 但是它返回0而不是我的测试值(类似于68763)

1 个答案:

答案 0 :(得分:0)

好的,对不起,因为麻烦但我自己找到了答案:

我必须把它放在客户端:

ByteBuffer buffer = ByteBuffer.wrap(serverIpPacket.getData());
currentServerStatusId = buffer.getLong();

这就是全部