tcp四次挥手:
fin(finish)完成,结束 断开连接请求
ack:应答
socket:同时可以收,发.叫做全双工 套接字是双向的
半双工:酒店的对讲机(别人说的时候你不能说) 只能在同一时刻进行发或者收操作
单工:收音机,话筒,只能有一个
可以理解为以下对话:
男(客户端):我们分手吧
女(服务器):额...
女:我们分手吧
男:好的
建议客户端首先主动关闭(当然也可以服务器先关闭)
报错:address in use 地址正在被使用 ----> TCP服务器存在的问题,一旦运行之后,主动终止之后,关闭socket
第四步:一定要客户端发给服务器
最后一次ack由于没有确认,必须保证这次最后一次ack顺利到达,所以有了2msl时间.
导致服务器重启,立刻bind端口就会失败
解决:重用地和端口 就可以重新进行立即绑定
如何重用:
# set socket option 选项级别:socket, 设置 reuseaddr 选项为1 表示设置有效
server_socket.setsocketopt(SQL_SOCKET,SO_REUSEADDR,1)
2MSL时间:tcp标准规定,主动断开连接的一方需要等待2msl时间才能释放原来使用的端口