我有一个罕见的错误似乎发生在读取套接字.
看来,在读取数据时,有时我只得到1-3个大于此数据包的字节.
正如我从管道编程中学到的那样,只要发送方提供足够的数据,我总是得到至少512个字节.
此外,我的发送者在传输任何内容的时候至少传输> = 4字节 - 所以我认为在传输的开始(!!)中一次只能接收4个字节.
在99.9%的情况下,我的假设似乎有......但是当收到的字节少于4个字节时,确实很少见.在我看来,为什么网络系统应该这样做呢?
有人知道更多吗?
这是我使用的阅读代码:
mySock, addr = masterSock.accept()
mySock.settimeout(10.0)
result = mySock.recv(BUFSIZE)
# 4 bytes are needed here ...
...
# read remainder of datagram
...
Run Code Online (Sandbox Code Playgroud)
发送方通过一次发送调用发送完整的数据报.
编辑:整个过程都在localhost上工作 - 因此不涉及复杂的网络应用程序(路由器等).BUFSIZE至少为512,发送方至少发送4个字节.