典型的套接字程序示例如下:
while(1){
data = socket.recv()
//do some work
}
由于你不知道包裹何时到达,所以它必须阻塞等待,直到从监听端口获取一些数据,假设程序在收到另一端的命令后开始繁重的工作,在工作期间,另一个包裹到达,但是因为此时你正在做工作,你没有监听端口,所以无论你处理工作的速度有多快,你都可能会错过包裹。
那么套接字如何处理所有数据而不丢失任何数据?
最佳答案
操作系统有 receive buffer它保存已从网络接收但尚未被应用程序接收的数据包。如果该缓冲区已满,数据包就会丢失。当数据包到达时,您不必进行 recv()
调用,但您应该确保足够频繁地调用它以防止缓冲区溢出。
关于sockets - 套接字如何不丢失到达的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18319238/