《TCP/IP网络编程》第7章 笔记&代码&注释

Linux的close()函数与Windows的closesocket()意味着完全断开连接,这令他无法再收&发数据。

为了更加优雅的断开连接:只断收发其中的一个功能,close()和closesockI()就显得不太够用。

shutdown()

//linux
#include<sys/socket.h>
int shutdown(int sock,int howto);

int sock:需要断开的套接字的文件描述(句柄)

int howto: 选择断开方式

断开方式

有如下3个是Linux的

  • SHUT_RD: 断开输入流
  • SHUT_WR:断开输出流
  • SHUT_RDWR:同时断开I/O流

如下三个是Windows的:

  • SD_SEND
  • SD_RECEIVE
  • SD_BOTH

都是字面意思很好理解。

注意:断开输入流后,若BUF(缓冲区)存在未处理的收到的数据将会被抹去;断开输出流后,若缓冲区存在未发送的数据将会将其发送到对端;而SHUT_RDWR相当于分两次调用SHUT_RD与SHUT_WR。

代码(Windows含客户端&服务器端,省略异常代码)

https://github.com/ChristmasError/TCP-IP-Network-programming/tree/master/%E7%AC%AC%E4%B8%83%E7%AB%A0%20%E4%BC%98%E9%9B%85%E7%9A%84%E6%96%AD%E5%BC%80%E5%A5%97%E6%8E%A5%E5%AD%97%E8%BF%9E%E6%8E%A5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值