设置超时时间不会丢失数据吗?

时间:2019-03-18 18:30:35

标签: python sockets so-linger

我已将SO_LINGER选项设置为:

sockfd.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 5))

然后检查套接字状态:

[root@localhost project]# ss -apn | grep 6666
tcp    LISTEN     0      5         *:6666                  *:*                   users:(("ipython",pid=35228,fd=13))
tcp    ESTAB      1152   0      127.0.0.1:40480              127.0.0.1:6666                users:(("ipython",pid=30818,fd=13))
tcp    ESTAB      0      1148   127.0.0.1:6666               127.0.0.1:40480               users:(("ipython",pid=35228,fd=14))

我可以在sockfd send_buf中看到1148个字节,然后通过调用关闭sockfd sockfd.close() 如预期的那样,在5秒钟后返回,但是没有错误.sockfd的状态变为FIN-WAIT-1,而当对等方开始读取时,它可以恢复总的1152和1148字节。是不是只能读取1152个字节? sockfd只是发送RST而不是FIN吗?

0 个答案:

没有答案