linux-socket编程(六) tcp

1:tcp的11种状态:

                                                  

上面的状态有10种,第11种是CLOSING,这个的产生条件是当服务器和客户端同时发送关闭请求,这时候不会产生FIN_WAIT状态而是会产生CLOSING状态。只有主动发送close的一端,才会有TIME_WAIT状态。

TCP协议11种状态集!

可以使用代码来查看状态。

服务器:客户端的端口是53372

客户端:服务器的端口是6666

查看tcp:

看不到SYN_SEND和SYN_RCVD的原因是这个所需时间太短。

查看其它状态:

首先查看服务器进程pid:

然后关闭该服务器进程:

查看当前服务器的tcp状态。

由上图可以看出客户端所处的状态是CLOSE_WAIT,服务器所处的状态是FIN_WAIT2.

然后有程序:如何使客户端进入CLOSE_WAIT后面的状态,在客户端输入字符回车:

查看当前状态:

对于客户端端来说,为什么可以在发送数据,是因为接收到FIN仅仅代表对方不再发送数据。当客户端向对方发送数据的时候,由于对方进程结束,导致对方会反馈RST段,当收到这个段之后,如果再调用write就会产生SIGPIPE信号,对于这个信号的处理我们通常忽略即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值