数据报是否始终完全收到?
大多数数据报接收函数,如c的recv或read,javas DatagramPacket类或pythonsocketServer,都包括找出接收数据量的可能性。
c:
int amount = recv(sock, buf, n, MSG_WAITALL);
爪哇岛:
int amount = datagramSocket.getLength();
蟒:
class MyUDPHandler(socketserver.BaseRequestHandler):
def handle(self):
amount = len (self.request[0])
这些可靠吗?或者,由于数据包碎片或网络延迟等原因,是否有可能仅接收部分消息?
换句话说:当我通过udp发送可变长度的数据块并在另一端接收它时,这些数量值是否正好等于原始块的大小?
编辑:
ninjalj提出了一个很好的观点,我想把它包括在这里。当接收功能中断时会发生什么,例如被信号中断?当两个线程同时尝试从同一套接字接收时,会发生什么情况?