我已将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吗?