linux下socket编程:区分close()与shutdown()
来源:互联网 发布:怎么在淘宝上搜高仿 编辑:程序博客网 时间:2024/05/18 00:54
转自:http://hi.baidu.com/yoshubom/blog/item/caa3b2de5d210559cdbf1a2b.html
socket关闭close和shutdown
socket关闭有2个close,shutdown
他们之间的区别:
close-----关闭本进程的socket id,但链接还是开着的,用这个socket id的其它进程还能用这个链接,能读或写这个socket id
shutdown--则破坏了socket 链接,读的时候可能侦探到EOF结束符,写的时候可能会收到一个SIGPIPE信号,这个信号可能直到
socket buffer被填充了才收到,shutdown还有一个关闭方式的参数,0 不能再读,1不能再写,2 读写都不能。
===============================================================================================================
socket 多进程中的shutdown, close使用
当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:
close(sockfd);
你也可以调用shutdown()函数来关闭该socket。该函数允许你只停止在某个方向上的数据传输,而一个方向上的数据传输继
续进行。如你可以关闭某socket的写操作而允许继续在该socket上接受数据,直至读入所有数据。
int shutdown(int sockfd,int how);
Sockfd是需要关闭的socket的描述符。参数 how允许为shutdown操作选择以下几种方式:
SHUT_RD:关闭连接的读端。也就是该套接字不再接受数据,任何当前在套接字接受缓冲区的数据将被丢弃。进程将不能对该
套接字发出任何读操作。对TCP套接字该调用之后接受到的任何数据将被确认然后无声的丢弃掉。
SHUT_WR:关闭连接的写端,进程不能在对此套接字发出写操作
SHUT_RDWR:相当于调用shutdown两次:首先是以SHUT_RD,然后以SHUT_WR
使用close中止一个连接,但它只是减少描述符的参考数,并不直接关闭连接,只有当描述符的参考数为0时才关闭连接。
shutdown可直接关闭描述符,不考虑描述符的参考数,可选择中止一个方向的连接。
注意:
1>. 如果有多个进程共享一个套接字,close每被调用一次,计数减1,直到计数为0时,也就是所用进程都调用了close,套
接字将被释放。
2>. 在多进程中如果一个进程中shutdown(sfd, SHUT_RDWR)后其它的进程将无法进行通信. 如果一个进程close(sfd)将不会
影响到其它进程. 得自己理解引用计数的用法了. 有Kernel编程知识的更好理解了.
- linux下socket编程:区分close()与shutdown()
- socket编程--close、shutdown
- linux下socket的close和shutdown
- linux下socket的close和shutdown
- linux下socket的close和shutdown
- linux下socket的close和shutdown
- Linux下socket shutdown和close
- linux下socket的close和shutdown
- linux下socket的close和shutdown
- linux下socket的close和shutdown
- Linux socket关闭连接shutdown与close
- Linux socket关闭连接shutdown与close
- linux socket close shutdown
- 【linux】close与shutdown
- linux网络编程之socket(十):shutdown 与 close 函数 的区别
- linux网络编程之socket(十):shutdown 与 close 函数 的区别
- linux网络编程之socket(十):shutdown 与 close 函数 的区别
- linux网络编程之socket(十):shutdown 与 close 函数 的区别
- Apache通过mod_dbd连接数据库
- Goblin XNA 的安装
- 程序员应该做的事
- 调用web service时,中文无法转换,出现异常CX_SY_CONVERSION_CODEPAGE
- c# 清除IE Cookies + 缓存
- linux下socket编程:区分close()与shutdown()
- Access关键字
- size_t引发的血案
- fdgdgdfgdf
- 金山快盘、百度网盘、数据银行Dbank、115网盘、QQ中转站测评比较
- Quality Center 9 破解许可文件
- Linux学习手札(一):初涉Linux
- Tomcat目录结构
- VS2008快捷键大全