当前位置: 首页 > 知识库问答 >
问题:

当TCP连接终止时,如何通知任何一方?

谭飞掣
2023-03-14

b.服务器与网络物理断开连接。客户怎么知道的?

c.服务器程序关闭而不进行优雅的断开连接。客户怎么知道的?

共有1个答案

岳嘉良
2023-03-14

情况A和C通过TCP数据包进行通信,报头中设置了fin标志。它是由OS中的TCP/IP堆栈发送的,所以如果应用程序异常退出也没关系。操作系统同样失败的C子例将像B一样运行。

情况B,当你失去了沟通的能力,就更复杂了。如果故障是本地的(例如,与WiFi接入点断开),那么连接的本地端会立即发现网络状态的变化,并可以推断连接已中断(但如果不清理,连接可以在短期中断后幸存)。

如果连接正在积极传输数据,则确认将超时并导致重新传输尝试。可能会对重传尝试设置限制,从而导致错误。

 类似资料:
  • 问题内容: 我正在用MySQL建立一个网站。我将TOAD用于MySQL,突然出现错误,无法连接数据库: “太多联系” Toad for MySQL中有什么方法可以查看现有连接以杀死它们或简单地将所有连接全部关闭? 问题答案: 不, 没有内置的MySQL命令 。有多种工具和脚本支持它,您可以手动终止某些连接或重新启动服务器(但这会比较慢)。 使用查看所有连接,进程ID是你想杀死。 您可以编辑超时设置

  • 问题内容: 是否可以在不关闭整个服务器的情况下终止服务器的Websocket连接?如果是这样,我该如何实现呢? 注意:我使用NodeJS作为后端和’ws’websocket模块。 问题答案: 如果要踢所有客户端而不关闭服务器,则可以执行以下操作: 如果您要特别寻找一个,也可以进行过滤。如果您要踢客户端作为连接逻辑的一部分(即,它发送错误的数据等),则可以执行以下操作: 和一个基本的客户 你会得到:

  • 如果应用程序未运行,GCMinentService(扩展GCMBasEventService)不会收到通知。 来自:http://developer.android.com/about/versions/android-3.1.html 已停止应用程序上的启动控制请注意,系统会将标志\u排除\u已停止\u包添加到所有广播意图中。它这样做是为了防止来自后台服务的广播无意或不必要地启动已停止应用程序的

  • 当我长按home键并杀死我的应用程序时,通知从状态栏中删除,但我想在应用程序被杀死时保留它,当应用程序被杀死时,如何在状态栏上保留通知?

  • 我有一个提醒应用程序,它根据listview中项目的时间发送通知,问题是每当我的手机重新启动或应用程序被终止时,该应用程序都不会发送任何通知 注意:该应用程序是脱机和本地的,它不使用internet连接,我不为此应用程序使用FCM或联机服务 非常感谢您抽出时间。

  • 我正在使用VOIP应用程序,呼叫通知在和中运行良好,但当我的应用程序处于状态时,我没有收到任何呼叫通知。 DidReceiveIncomingPushWith 截图