java.net.Socket TCP keep-alive 用法

2023-12-06

如何使用java.net.Socket setKeepAlive(boolean b) API?

我正在使用一个简单的服务器托管Socket。 客户端可以连接并发送数据。除非客户端发送流结束,否则我不会关闭连接。客户端可以继续保持连接任意时间。数据传输将继续,但突然我发现连接丢失,没有任何日志。一旦客户端(不是服务器)重新启动,传输就会再次开始。 我没有设置任何timeout默认情况下它是无穷大。我想了解什么setKeepAlive实际上这样做是为了让我能够决定是否需要将其设置为true。 有人可以帮助我理解同样的事情吗?谢谢。


作为文档setKeepAlive()说,它将启用(或禁用)SO_KEEPALIVE插座上的选项。

当为 TCP 套接字设置 keepalive 选项并且 2 小时内没有通过套接字在任一方向上交换数据时(注意:实际值取决于实现),TCP 会自动向对等方发送 keepalive 探测。该探测是对等方必须响应的 TCP 段。预计会出现以下三种响应之一: 1. 对等方以预期的 ACK 进行响应。应用程序不会收到通知(因为一切正常)。 TCP 将在另外 2 小时不活动后发送另一个探测。 2. 对等方以 RST 进行响应,告知本地 TCP 对等方主机已崩溃并重新启动。套接字已关闭。 3. 对方没有回应。套接字已关闭。该选项的目的是检测对等主机是否崩溃。仅对 TCP 套接字有效:SocketImpl

Here是另一个参考解释SO_KEEPALIVE option.


请注意,在网络中,连接可能随时由于多种原因而丢失。如果连接穿越 NAT 路由器,NAT 表中的条目可能会过期(当连接空闲时),并且连接因此丢失。客户端可能会停止运行或被暂停(尤其是笔记本电脑和移动设备),或者电缆可能会断开,或者 WiFi(或蜂窝)信号可能会受到干扰,或者……这样的例子不胜枚举。您的服务器需要编写为能够优雅地处理连接丢失的情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.net.Socket TCP keep-alive 用法 的相关文章

  • 如何使用Spring WebClient进行同步调用?

    Spring Framework in 休息模板 https docs spring io spring framework docs current javadoc api org springframework web client R
  • 使用 WebDriver 单击新打开的选项卡中的链接

    有人可以在这种情况下帮助我吗 场景是 有一个网页 我仅在新选项卡中打开所有指定的链接 现在我尝试单击新打开的选项卡中的任何一个链接 在下面尝试过 但它仅单击主 第一个选项卡中的一个链接 而不是在新选项卡中 new Actions drive
  • Android 中的列表(特别是 RecyclerView 和 CardView)如何工作

    请原谅我问这个问题 但我是 Android 开发新手 尽管我正在尝试了解developer android com 网站上的基础知识 但大多数示例 即使他们说它们是为 Android Studio 构建的 尚未设置为使用 Gradle 因此
  • Logback:SizeAndTimeBasedRollingPolicy 不遵守totalSizeCap

    我正在尝试以一种方式管理我的日志记录 一旦达到总累积大小限制或达到最大历史记录限制 我最旧的存档日志文件就会被删除 当使用SizeAndTimeBasedRollingPolicy在 Logback 1 1 7 中 滚动文件追加器将继续创建
  • 为什么 MOVE CURSOR 在 OS X Mountain Lion 上不显示?

    我正在做一个项目 想看看 Swing 提供的每个光标是什么样子的 public class Test public static void main String args JFrame frame new JFrame frame set
  • Java中的断点和逐步调试?

    抱歉我的问题名称很奇怪 我不知道如何寻找这个 因为我不知道这些东西是如何称呼的 Visual Studio 中至少有一个功能 您可以单击代码左侧并设置一个大红点的起点 然后运行程序 您可以通过按 f8 或 f5 实际上是不同的 f 来跟踪步
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • Play.application() 的替代方案是什么

    我是 Play 框架的新手 我想读取conf文件夹中的一个文件 所以我用了Play application classloader getResources Data json nextElement getFile 但我知道 play P
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • 如何让 Emma 或 Cobertura 与 Maven 一起报告其他模块中源代码的覆盖率?

    我有一个带有 Java 代码的多模块 Maven 设置 我的单元测试在其中一个模块中测试多个模块中的代码 当然 这些模块具有相互依赖性 并且在测试执行之前根据需要编译所有相关模块中的代码 那么 如何获得整个代码库覆盖率的报告 注意 我不是问
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

    假如说arraylist定义为ArrayList
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • try-with-resources 中出现死代码警告,但翻译后的 try-catch-finally 中没有出现死代码警告

    以下代码使用try 有资源 https docs oracle com javase specs jls se7 html jls 14 html jls 14 20 3Java 8 中引入的构造 偶尔抛出 方法被声明为抛出一个偶尔的异常
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐

  • Python Regex - 在文本文件中的(多个)表达式之间提取文本

    我是一名 Python 初学者 如果您能帮助我解决文本提取问题 我将非常感激 我想提取文本文件中两个表达式之间的所有文本 字母的开头和结尾 对于两者 字母的开头和结尾都有多种可能的表达式 在列表 letter begin 和 letter
  • 如何在表格视图底部添加新行 - 聊天消息

    每次用户键入消息并单击 发送 时 我都会使用以下代码添加新消息 效果很好 但问题是 新消息被插入到表视图的顶部 我希望将其插入底部 import UIKit class ViewController UIViewController UIT
  • NServiceBus:指定消息顺序

    我在它自己的进程中使用 NServiceBus 所以not使用通用主机 我希望按特定顺序为一条消息提供多个消息处理程序 对于通用主机 您将实施ISpecifyMessageHandlerOrdering 但我不知道在托管您自己的 NServ
  • 使用 strut2 jquery 插件标签将 JSON 对象发送到 Struts 2 操作

    我们可以通过以下方式将 JSON 发送到 Struts2 操作json拦截器 有很好的样本http tech learnerandtutor com send json object to struts 2 action by jquery
  • 文件夹内容更改时重新启动 ASP.NET 应用程序

    我正在编写一个带有 插件 的网络应用程序 这些插件将是 DLL 文件 它将通过预定义的接口和东西导出其功能 所有 DLL 文件都位于名为 Plugins 的文件夹中 ASP NET 应用程序在启动时加载它们 通过使用 Assembly Lo
  • 带有文本的纹理,看起来像素化,如何在 unity3d 中解决这个问题?

    我使用 1024x1024 纹理 它映射到 Unity3d 中的四边形 目前的目标平台是 PC 独立平台 它看起来是这样的 您可以看到屏幕中的对象有多么像素化和模糊 如何才能使其更具可读性并减少像素化 导入设置 质量设置和关闭 mip ma
  • 读取/写入 Excel 2007 受密码保护的文档

    Office 2007 使用什么方法进行加密 当从 Office 菜单中选择 加密 并设置密码时 我的 C 应用程序需要创建和读取加密的 Excel 2007 文件 xlsx 重要的是这些文件仍然可以从 Excel 访问 因此我必须使用 M
  • 更改 BlobBuilder 中的文件名以作为 XHR 上的 FormData 传递

    我目前正在尝试将 ArrayBuffer 上传到服务器 我无法更改 该服务器需要我以多部分 表单数据格式上传的文件 服务器从Content Disposition部分的filename将被保存并在Content type提供文件时将使用的
  • 当计算使用后台线程时,如何正确声明计算属性?

    我试图声明一个由块组成的计算属性 在后台线程中执行 因此 当我处理这个属性时 它是零 因为计算在未准备好时返回结果 如何更好地纠正这个问题 谢谢你 enum Result
  • NestJS CLI 输出垃圾

    我已经使用过 NestJS 相当多了 而且它也是 CLI 但是当我现在想使用它时 它开始输出垃圾 我尝试的每个命令 nest nest info nest new npm run start dev This started happeni
  • 如何防止 app.config 集成到 .net 库 (dll) 中

    当我编译库时 Settings Settings 中的所有设置都集成到 DLL 中 我该如何防止这种情况 查看Settings settings文件的属性 并将 构建操作 设置为 资源 将 复制到输出目录 设置为 不复制 这应该会创建一个
  • Symfony 6无法使用mailer发送电子邮件(未配置数据库)

    大家好 我刚刚开始使用 Symfony6 构建网络 我尝试使用邮件程序发送电子邮件 但它以某种方式需要配置数据库 为消息创建一些特殊表 也许有一些解决方法 因此它可以在没有数据库的情况下工作 在 Symfony 5 中没有问题 如果在 co
  • 检查 Python While 循环中的值是否仍然保持不变

    我想知道是否有一种优雅的方法来查看是否可以检查在 while 循环中不断变化的值 并在该值停止变化并保持不变时停止 while 循环 例如 Value 0 while True value changes everytime if valu
  • 借助 PHP 和 HTML 动态创建行和列

    我想在 PHP 和 HTML 的帮助下创建动态行和列 但我对这段代码有点困惑 因此非常感谢一些帮助 table table 场景很简单 Mysql 数据从 for each 循环返回 6 条记录 结果将如下图所示 同样的方式 Mysql 数
  • 在 array.xml 中添加超链接文本

    我正在使用 array xml 创建列表并将其填充到 listView 中 问题是我需要在 arrayItem 描述中添加一个超链接文本 这样当我将其填充到 listView 中时 它应该链接到我的网站
  • 我是否需要 Content-Type: application/octet-stream 来下载文件?

    The HTTP标准 says 如果在响应中使用此标头 Content Disposition Attachment 对于 application octet stream 内容类型 隐含的 建议用户代理不应显示响应 但是 直接进入 将响应
  • java泛型,如何从两个类扩展?

    我想要一个 Class 对象 但我想强制它所代表的任何类扩展 A 类和 B 类 我可以
  • 如何在 C# 中获取对象的小写名称(即使为 null)[重复]

    这个问题在这里已经有答案了 我有C 方法 private static string TypeNameLower object o return o GetType Name ToLower 给我输入对象的小写类型名称 但是 如果输入是设置
  • C# WCF - 客户端/服务器 - System.OutOfMemory 异常

    问题 使用 Net TCP 绑定 发布者 订阅者模式 的 C WCF 客户端 服务器应用程序 客户端不断崩溃OutOfMemoryException 当我与客户端一起运行任务管理器时 我可以看到 内存使用情况 列不断增加 直到应用程序崩溃
  • java.net.Socket TCP keep-alive 用法

    如何使用java net Socket setKeepAlive boolean b API 我正在使用一个简单的服务器托管Socket 客户端可以连接并发送数据 除非客户端发送流结束 否则我不会关闭连接 客户端可以继续保持连接任意时间 数