Java 数据包的getOffset()在接收器上返回0';终点

Java 数据包的getOffset()在接收器上返回0';终点,java,udp,datagram,Java,Udp,Datagram,我有一个很长的文本文件,我正试图在本地主机上通过UDP传输,因此自然我必须打破字节缓冲区以数据包的形式发送该文件 我遇到的问题是: 在服务器端,我将偏移量设置为500的数据包发送到字节缓冲区: byte[] buf = text.getBytes(); InetAddress address = InetAddress.getByName("localhost"); DatagramPacket packet = new DatagramPack

我有一个很长的文本文件,我正试图在本地主机上通过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


提前感谢

这一切的意义是:

  • 在发送方,您创建了一个
    DatagramPacket
    ,使用源数组的每个数据包500个字节

  • 是你寄的。它以UDP数据报的形式通过网络传输。它以UDP数据报的形式到达

  • 在接收器上,您构建了一个新的字节数组,并在其周围构建了一个新的
    DatagramPacket
    ,指定offset=0,或不指定offset参数。您将接收到的数据放入
    DatagramPacket。
    Java将UDP数据报放入
    DatagramPacket中的字节数组中,
    从您指定的偏移量开始:零

  • 请注意,发送方的
    DatagramPacket
    本身并没有经过连接,发送方的字节数组也没有