我有一个很长的文本文件,我试图在本地主机上跨UDP传输它,所以很自然,我必须分解字节缓冲区才能以数据包的形式发送该文件。
我遇到的问题是:
在服务器端,我将带有偏移量的数据包发送到字节缓冲区集中,例如500:
byte[] buf = text.getBytes();
InetAddress address = InetAddress.getByName("localhost");
DatagramPacket packet = new DatagramPacket(buf, 500, BYTES_PER_PACKET, address, udp_port_num);
System.out.println("Offset at server: " + packet.getOffset());
udpSocket.send(packet);
print语句返回预期的答案500。
但在客户端:
byte[] buf = new byte[BYTES_PER_PACKET];
DatagramPacket packet = new DatagramPacket(buf, BYTES_PER_PACKET);
udpSocket.receive(packet);
String received = new String(packet.getData());
System.out.println(received);
System.out.println("Offset: " + packet.getOffset());
它从接收到的文件的偏移量中打印正确的文本,但是packet.getOffset()总是返回0。为什么它不从服务器返回相同的500,或者如何使它从服务器返回相同的500?
提前感谢
发布于 2013-04-30 01:28:42
这一切的意义是:
DatagramPacket
-500创建了一个。DatagramPacket
,指定了偏移量= 0,或者没有偏移参数。将UDP数据报放到DatagramPacket,
中的字节数组中,从指定的偏移量开始:零。请注意,发送方的DatagramPacket
本身没有通过线路,也没有通过发送方的字节数组。
https://stackoverflow.com/questions/16286568
复制相似问题