代码复线close_wait 状态
服务端
import socket #socket模块
import time
HOST='127.0.0.1'
PORT=50007
s= socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义socket类型,网络通信,TCP
s.bind((HOST,PORT)) #套接字绑定的IP与端口
s.listen(1) #开始TCP监听,监听1个请求
while 1:
conn,addr=s.accept() #接受TCP连接,并返回新的套接字与IP地址
print ('Connected by' + str(addr)) #输出客户端的IP地址
time.sleep(86400)
服务端接受到链接后没有休眠1天,没有调用close 关闭链接。
客户端代码:
import socket
HOST='127.0.0.1'
PORT=50007
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义socket类型,网络通信,TCP
s.connect((HOST,PORT)) #要连接的IP与端口
s.sendall(b'0000') #把命令发送给对端
s.close() #关闭连接
发起请求后直接关闭链接。
然后通过lsof观察链接状态为CLOSE_WAIT 状态。 所以是被动关闭一方没有调用close引起。