假设我将客户端套接字的缓冲区大小设置为1024:
recv(1024)
假设服务器想要发送给我一个由2024个字节组成的消息。我的套接字只能接收1024个字节。其他1000个字节会发生什么?
- recv方法会等待一定的时间(比如2秒钟)来接收更多的数据,超过这个时间后就会停止工作吗?(即使剩余的数据在3秒钟后到达,也不会被套接字接收到?)
或者
- recv方法一旦接收到1024个字节的数据就会立即停止工作吗?(即另外的1000个字节会被丢弃?)
如果1.)是正确的... 是否有一种方法可以确定recv方法等待返回的时间或是否由系统决定?(例如,我能告诉套接字在停止等待更多数据之前等待5秒钟吗?)
更新:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((sys.argv[1], port))
s.send('Hello, world')
data = s.recv(1024)
print("received: {}".format(data))
s.close()
假设服务器发送的数据大小大于1024个字节。我能确定变量"data"将包含所有数据(包括超过第1024个字节的数据)吗? 如果不能确定,我该如何更改代码,以便始终可以确保变量"data"将包含从服务器发送的所有数据(在一个或多个步骤中)?