【发布时间】:2013-04-29 19:22:48
【问题描述】:
我有一个冗长的文本文件,我正试图在 localhost 上通过 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);
打印语句返回 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?
提前致谢
【问题讨论】: