socket网络编程中常用的SO_KEEPALIVE套接字选项
来源:互联网 发布:南昌大学软件学院学费 编辑:程序博客网 时间:2024/05/03 07:31
使用getsocketopt( )可以得到当前套接字的选项内容
使用setsocketopt( )函数设置应用程序需要使用的套接字选项
SO_KEEPALIVE选项:
设置了这个选项后,如果TCP连接2小时内在任一方向都没有数据交换,那么TCP自动发送一个keep-alive probe(分节),这个分节对端必须回应,会出现三种情况:
1)对端返回ACK,说明连接正常,应用进程不会得到任何通知,因为连接本身是正常的;
2)对端返回RST,说明对端崩溃或者重启了,此时本端关闭套接字,socket待处理错误置为ECONNRESET;
3)对端无任何反应,重试后(重试的实现,各个*nix系统实现不同)仍无回应的,关闭套接字,socket待处理错误置为ETIMEOUT;
使用setsocketopt( )函数设置应用程序需要使用的套接字选项
SO_KEEPALIVE选项:
设置了这个选项后,如果TCP连接2小时内在任一方向都没有数据交换,那么TCP自动发送一个keep-alive probe(分节),这个分节对端必须回应,会出现三种情况:
1)对端返回ACK,说明连接正常,应用进程不会得到任何通知,因为连接本身是正常的;
2)对端返回RST,说明对端崩溃或者重启了,此时本端关闭套接字,socket待处理错误置为ECONNRESET;
3)对端无任何反应,重试后(重试的实现,各个*nix系统实现不同)仍无回应的,关闭套接字,socket待处理错误置为ETIMEOUT;
4)某次重试收到了ICMP错误报文,关闭套接字,并设置相应的错误。
一般这个选项用在服务端,客户端也可以使用。服务器程序使用这个选项可以处理“半开连接”问题(client崩溃或者异常退出,而服务器没有得到任何通知,仍然保持连接的问题)。同时,应用进程可以自己实现分钟级别的超时处理,用来更及时的处理半开连接问题,这个超时处理跟SO_KEEPALIBE套接字选项无关。
0 0
- socket网络编程中常用的SO_KEEPALIVE套接字选项
- 网络编程-常用的套接字选项
- 套接字选项SO_KEEPALIVE
- linux Socket 中 setsockopt的SO_KEEPALIVE选项
- linux Socket 中 setsockopt的SO_KEEPALIVE选项
- 套接字选项SO_LINGER, SO_KEEPALIVE等
- 网络编程--套接字选项
- socket选项SO_KEEPALIVE
- Socket选项:SO_KEEPALIVE
- 网络编程socket套接字
- Linux网络编程:8. 套接字选项
- 《unix网络编程》套接字选项
- Linux网络编程--8. 套接字选项
- 网络编程学习_套接字选项
- Linux网络编程--8. 套接字选项
- Linux 网络编程 套接字选项
- UNIX网络编程 TCP套接字选项
- LINUX网络编程--套接字选项
- Redis-数据结构-6-压缩列表
- 线程池的原理及实现
- 书摘《参与感——小米口碑营销内部手册》
- 反转链表
- PAT甲级1041
- socket网络编程中常用的SO_KEEPALIVE套接字选项
- 一种红包发送功能的实现(redis+mysql+quartz)
- 喝着JAVA看算法_02_递归算法
- Java 8 Lambda表达式在addMouseListener中的使用
- centos主要配置文件以及常用命令
- 实例:linux下实现简单的socket 客户端 服务端
- UVA-4.10(ti)-Flooded-815
- linux 下 mysql操作 练习
- 感光元件