任何调用
receive()都会给您一个完整的数据包-片段处理在套接字下面的两层中进行。碎片和碎片整理发生在网络/
Internet层(IP)中,因此套接字将永远不会看到碎片,而只会接收完整和完整的UDP
/ TCP数据包(只有完整的数据包才发送到侦听端口)。
因此,不,您不需要多个
receive()数据包就可以获取一个数据包,但是您应该意识到UDP是不可靠的,因此,如果一个片段在网络层丢失(在某些情况下,如果出现乱序),您将赢得无法获取数据包。
您可能还需要检查方法,
getReceiveBufferSize()并且
setReceiveBufferSize()在接收数据包时遇到问题-
如果缓冲区大小小于数据包大小,则不能保证可以接收到数据包。



