首页 > 解决方案 > ServerSocket:处理与客户端的断开连接

问题描述

要求: 我正在编写一个 Java 应用程序,我需要我的应用程序充当服务器,在特定端口“xxxx”上侦听TCP传入连接。一旦连接到客户端,就会有从客户端发送的字节流,我的应用程序将处理这些字节流并将信息适当地保存在数据库中。到目前为止,我已经能够实现此功能。

要处理的场景:我需要处理一个特定的场景(这可能很少见,但仍然如此)。由于网络状况,客户端-服务器连接有时可能会中断。在这种情况下,我需要我的应用程序等待连接重新建立并继续从客户端读取字节流。

我对 Java 中的套接字编程比较陌生,正在寻找可行的解决方案。我想到了两种可能的解决方案(这在技术上可能可行,也可能不可行):

  1. 配置回调- 我可以配置回调,以便在(重新)建立连接后立即启动 readFromClient() 方法。我不知道该怎么做。
  2. 添加事件侦听器 - 如果将与客户端的连接视为事件,我可以注册一个事件侦听器并在(重新)建立连接后立即触发 readFromClient() 方法。我对如何做到这一点有一个基本的想法,并且也在尝试实施它。但是,如果有人能提出一个干净的方法,将不胜感激。

我不知道我是否朝着正确的方向思考。但我认为这些可能是可能的解决方案。任何帮助,将不胜感激。

标签: javasocketscallbackevent-handlingserversocket

解决方案


...重新建立继续阅读流...

关键是(在我的理解中):没有重建。如果连接消失(发生 IOException),则不再需要重新建立。

通过使用 TCP,您不需要(或更少)关心网络状况。

如果你想知道一个连接是否存在,你必须使用心跳。

如果您想重新连接到客户端,他必须为您提供可能性。

也许我没有明白你在说什么,但你可以发布一些代码并显示错误情况(可能是一些错误)。


推荐阅读