UNP: Chatper5-TCP Server Client

Notes:

多进程的server程序, 记得要处理SIG_CHLD signal, 否则会有zombie process存在

2  TCP server clien Senario:

    2.1 Client abort before server's accept() return:  -client 在和server完成三次握手后close, 向server发送RST。这个通过设置socket option SO_LINGER 来实现。server accept的动作在各个系统的实现中不同。

   2.2 Server 被关掉了, client  被block在stdin。server向client发送  FIN1, client发送ACK,连接处于半连接状态。client输入字符发送后, 能够正常从connection中读出数据,client 向server发送FIN和收到ACK,这时connection已经close了。再次发送数据,会得到SIGPIPE的错误。如和解决这种两次发送后才得到server已经shutdown的信息呢?通过两次written到server来实现。

  2.3 server crash了: 因为server不会发送ACK到client, client 会向server一直发送数据,直到TIMEOUT。我们可以通过keep alive机制来快速检测这种情况。

  2.4 server crash and reboot:  因为server crash了,client会向server一直发送数据。当server恢复后,收到client的数据包后,会向client发送RST,因为之间connection的信息已经丢了. 连接中断。

  2.5 server shut down. server收到SIGTERM后,会向client发送FIN。其情况与2.2 类似。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值