基于TCP的半关闭

TCP练级的半关闭简而言之就是”关闭连接的一半”(半关闭后只支持传递或接收数据中的一种操作)
 
套接字和流
两台主机通过套接字建立连接后进入可交换数据的状态(流形参的状态),即将建立套接字后可交换数据的状态看做一种流
套接字的流中,数据只能向一个方向移动,因此需要两个流进行双向通信(建立连接后的主机将拥有单独的输入流与输出流这两个相互独立的流,这两个流与连接上的另一个主机的输出流与输入流形相连),半关闭就是指关闭其中一个方向的流
 
Linux系统下的close函数与windows下的closesocket函数被调用后是完全的断开连接,即同时关闭了输入流与输出流,这也导致不能再发送数据也不能再接收数据


半关闭实现函数
Int shutdown(int sock, int howto);
Linux中:
成功返回0,失败返回-1
参数一需要断开的套接字的文件描述符
参数二断开方式,可取值
SHUT_RD 断开输入流           SHUT_WR断开输出流            SHUT_RDWR同时断开输入与输出流
 
Windows中:
成功返回0,失败返回SOCKET_ERROR
参数二可取值:
SD_RECEIVE 断开输入流       SD_SEND断开输出流              SD_BOTH同时断开输入与输出流

 

断开结果

断开输入流:套接字将无法接受数据,即使输入缓冲收到数据也会抹去,且无法调用输入相关函数,
断开输出流:套接字无法传输数据ÿ
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值