网络编程学习笔记(shutdown函数)

终止网络连接的正常方法是close,但close有两个限制,可由shutdown来避免

1、close将描述字的访问计数减1,仅在此计数为0时才关闭套接口。用shutdown可以激发TCP的正常连接终止序列,而不管访问计数

2、close终止了数据传送的两个方向:读和写。由于TCP连接是全双工的,有很多时候我们要通知另一端我们已经完成了数据发送,即使那一端仍有许多数据要发送也是如此。

其函数如下:

#include <sys/socket.h>
int shutdown(int sockfd, int howto);
成功返回 0,失败返回-1

该函数的行为依赖于参数howto的值

SHUT_RD:关闭连接的读这一半,不再接收套接口中的数据且现留在套接口接收缓冲区中的数据作废。进程不能再对套接口执行任何读函数。调用此函数后,由TCP套接口接收的任何数据都被确认,但数据本身扔掉

SHUT_WR:关闭连接的写一半,在TCP场合下,这称为半关闭。当前留在套接口发送缓冲区中的数据都被发送,后跟正常的TCP连接终止序列。这个写这一半的关闭不管套接口描述字的访问计数是否大于0的,进程不能再执行对套接口的任何写操作。

SHUT_RDWR:连接的读这一半和写这一半都关闭。这等效于调用 函数shutdown两次,第一次调用时SHUT_RD,第二次用SHUT_WR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值