day11 soket编程之半关闭
来源:互联网 发布:大秦帝国 纵横 知乎 编辑:程序博客网 时间:2024/06/08 09:33
当TCP链接中A发送FIN请求关闭,B端回应ACK后(A端进入FIN_WAIT_2状态),B没有立即发送FIN给A时,A方处在半链接状态,此时A可以接收B发送的数据,但是A已不能再向B发送数据。
从程序的角度,可以使用API来控制实现半连接状态。
#include <sys/socket.h>int shutdown(int sockfd, int how);sockfd: 需要关闭的socket的描述符how: 允许为shutdown操作选择以下几种方式: SHUT_RD(0): 关闭sockfd上的读功能,此选项将不允许sockfd进行读操作。 该套接字不再接受数据,任何当前在套接字接受缓冲区的数据将被无声的丢弃掉。 SHUT_WR(1): 关闭sockfd的写功能,此选项将不允许sockfd进行写操作。进程不能在对此套接字发出写操作。 SHUT_RDWR(2): 关闭sockfd的读写功能。相当于调用shutdown两次:首先是以SHUT_RD,然后以SHUT_WR。
使用close中止一个连接,但它只是减少描述符的引用计数,并不直接关闭连接,只有当描述符的引用计数为0时才关闭连接。shutdown不考虑描述符的引用计数,直接关闭描述符。也可选择中止一个方向的连接,只中止读或只中止写。
注意:
- 如果有多个进程共享一个套接字,close每被调用一次,计数减1,直到计数为0时,也就是所用进程都调用了close,套接字将被释放。
- 在多进程中如果一个进程调用了shutdown(sfd, SHUT_RDWR)后,其它的进程将无法进行通信。但,如果一个进程close(sfd)将不会影响到其它进程。
阅读全文
1 0
- day11 soket编程之半关闭
- soket编程
- VC++ 网络SOKET编程
- DELPHI SOKET 编程!
- DELPHI SOKET 编程
- 揭开soket编程面纱
- Soket编程学习
- java soket编程
- java soket编程
- java Soket编程(三)
- Linux 下的soket编程
- linux soket编程(tcp)
- Java网络编程之(三): TCP协议使用NIO实现非阻塞Soket通信
- Java网络编程之(三): TCP协议使用NIO实现非阻塞Soket通信
- Android-HTTP网络编程和Soket
- Soket 编程 连接发送信息 udp
- day11
- DAY11
- [机器学习入门] 李宏毅机器学习笔记-4(Where does the error come from ;误差分析)
- 网络请求+ImageLoader
- MyEclipse打开JSP文件报"Failed to create the part's controls"解决方法v
- IO模型和Select/Poll/Epoll解析
- BaseCode之日期工具类:DateUtil.java
- day11 soket编程之半关闭
- 括号配对问题 (南阳理工oj-题目2)
- wcf序列化和消息编码
- 微信小程序获取系统时间、时间戳、时间时间戳加减
- mysql基础
- Linux 设置编码格式&乱码
- HttpClient Get请求中返回中文乱码问题解决
- [html5入门-27]CSS布局奇淫巧计之-强大的负边距
- LeetCode 38. Count and Say