网络编程学习笔记(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
网络编程学习笔记(shutdown函数)相关推荐
- 网络编程学习笔记(poll函数)
其原型为: #include <poll.h> int poll(struct pollfd *fdarray, unsigned long nfds, int timeout); 成功时 ...
- 网络编程学习笔记(socketpair函数)
socketpair函数建立一对相互连接的套接口,这个函数只对Unix域套接口适用,其定义如下: #include <sys/socket.h> int socketpair(int fa ...
- 网络编程学习笔记(getnameinfo函数)
这个函数与getaddrinfo互补,它以一个套接口地址为参数,返回一个描述主机的字符串和一个描述服务的字符串.其函数原型如下: #include <netdb.h> int getnam ...
- 网络编程学习笔记(udp_client函数)
创建一个未连接的UDP套接口的客户函数,其代码如下: #include <netdb.h> #include <sys/socket.h> #include <netin ...
- 网络编程学习笔记(getaddrinfo函数)
函数getaddrinfo在库函数中隐藏了所有协议依赖性.应用 程序只需要处理由getaddrinfo填写的套接口地址结构.其函数原型为: #include <netdb.h> int g ...
- 网络编程学习笔记(uname函数)
函数uname返回当前主机的名字.经常与gethostbyname一起用来确定本地主机的IP地址.其原型为: #include <sys/utsname.h> int uname(stru ...
- 网络编程学习笔记(gethostbyaddr函数)
函数gethostbyaddr取一个二进制的IP地址并试图找到相应于此地址的主机名,与gethostbyname的行为恰好相反.gethostbyname感兴趣的是h_name 其原型为: #incl ...
- 网络编程学习笔记(gethostbyname2函数与IPv6支持)
其原型为: #include <netdb.h> struct hostent * gethostbyname2(const char *hostname, int family); 成功 ...
- 网络编程学习笔记(gethostbyname函数)
#include <netdb.h> struct hostent* gethostbyname(const char* hostname); 成功,返回非空指针,出错返回空指针,同时设置 ...
最新文章
- iOS 快速存储到本地
- c语言万年历设计背景,万年历设计报告
- 删除VS.NET起始页上项目名称的方法.
- 通过配置hosts.allow和hosts.deny文件允许或禁止ssh或telnet操作
- 开关怎么使用_智能数显压力开关怎么使用?
- PopupWindow 常用方法学习笔记
- (首个填坑)联想拯救者Y7000(自带win10 home) 安装Ubuntu16.04.6 + NVIDIA GTX1650驱动
- 怎样使用U盘启动盘安装乌班图系统
- 系统规划与管理师历年论文
- linux底层技术,Linux后端程序成长关键技术之底层体系结构
- 手把手教你查看常用理财工具
- 利用Python学习数据挖掘【2】
- oracle存储过程循环输入数据,oracle 存储过程循环插入数据
- HR在线揭秘:面试总被虐?这 12 个必问题请记好答案!
- 2021电赛国一——K题照度稳定可调LED台灯
- SuperMap GIS 9D(2019)产品白皮书_V2018Q4R1
- Java 正则表达式对数据脱敏处理
- 面向对象之关键字 this
- vue-cli构建的移动端项目ios9以下打开页面空白问题
- STemwin小工具应用
热门文章
- POJ 3620-Avoid The Lakes
- 下列关于python的描述正确的是-以下关于Python中模块的说法正确的是(_____)。...
- python飞机大战的实训心得体会-python之基础总结(飞机大战)
- python有相关的证书可以考吗-python的证书
- python界面图片-python实现读取并显示图片方法(不需要图形界面)
- python基础知识整理-Python3基础知识(一)
- python个人赚钱攻略-每个懂Python的人都必须知道的赚钱神器
- 查看python安装路径-在cmd中查看python的安装路径方法
- python有趣代码-盘点10个一行强大的、有趣的Python源代码
- python编程爱心-Python使用turtle库画一个爱心构成的爱心