`

java socket参数详解:KeepAlive

 
阅读更多
keepAlive不是说TCP的常连接,当我们作为服务端,一个客户端连接上来,如果设置了keeplive为true,当对方没有发送任何数据过来,超过一个时间(看系统内核参数配置),那么我们这边会发送一个ack探测包发到对方,探测双方的TCP/IP连接是否有效(对方可能断点,断网)。如果不设置,那么客户端宕机时,服务器永远也不知道客户端宕机了,仍然保存这个失效的连接。
当然,在客户端也可以使用这个参数。客户端Socket会每隔段的时间(大约两个小时)就会利用空闲的连接向服务器发送一个数据包。这个数据包并没有其它的作用,只是为了检测一下服务器是否仍处于活动状态。如果服务器未响应这个数据包,在大约11分钟后,客户端Socket再发送一个数据包,如果在12分钟内,服务器还没响应,那么客户端Socket将关闭。如果将Socket选项关闭,客户端Socket在服务器无效的情况下可能会长时间不会关闭。
尽管keepalive的好处并不多,但是很多开发者提倡在更高层次的应用程序代码中控制超时设置和死的套接字。同时需要记住,keepalive不允许你为探测套接字终点(endpoint)指定一个值。所以建议开发者使用的另一种比keepalive更好的解决方案是修改超时设置套接字选项。
说白了:这个参数其实对应用层的程序而言没有什么用。可以通过应用层实现了解服务端或客户端状态,而决定是否继续维持该Socket。
分享到:
评论

相关推荐

    SocketDemo

    2. **保持连接**:通过设置Socket选项如SO_KEEPALIVE等,保持连接不被操作系统断开。 3. **心跳包机制**:定时发送心跳包检测连接状态,确保连接有效性。 #### 三、通信过程详解 在SocketDemo项目中,客户端与...

    java网络包全解析

    ##### Socket详解 **Socket** 类提供了创建客户端Socket的功能,它代表了一个TCP/IP连接的客户端部分。主要分为以下几部分: 1. **构造方法**: - 构造一个连接到指定主机和端口的Socket。 - 构造一个未连接的...

    apache+Tomcat负载平衡设置详解

    - `socket_keepalive`:设置为 `true` 以保持空闲连接的活跃状态。 四、负载平衡策略 Apache 提供多种负载平衡策略,如轮询(round-robin)、最少连接数(least connections)、IP 会话亲和(IP-based session ...

    netty源码解析视频

    - 合理设置TCP参数,如SO_KEEPALIVE、SO_REUSEADDR等。 - 调整线程池大小和队列长度等参数以适应不同场景下的性能需求。 4. **错误处理与异常捕获**: - 通过在`ChannelPipeline`中添加异常捕获处理器(如`...

    jk_module用于Windows64位和32位Apache

    **JK模块详解** JK模块是Apache HTTP服务器与Tomcat应用服务器之间进行通信的重要组件,它在Windows 64位和32位系统上都可运行,确保了跨平台的兼容性和稳定性。该模块的主要功能是将HTTP请求从Apache传递到Tomcat...

    Glassfish V2与Apache的整合

    worker.worker1.socket_keepalive=1 worker.worker1.socket_timeout=300 ``` 别忘了将mod_jk模块的动态链接库文件`mod_jk-1.2.26-httpd-2.2.4.so`复制到Apache的`modules`目录,并将`tomcat-ajp.jar`,`commons-...

    apache和tomcat整合.pdf

    - `worker.worker1.socket_keepalive=1` - `worker.worker1.socket_timeout=300` - **配置mod_jk.conf文件** - 指定worker配置文件路径:`JkWorkersFile /usr/local/apache2/conf/workers.properties` - 设置...

Global site tag (gtag.js) - Google Analytics