>要求:我正在编写一个Java应用程序,我需要我的应用程序充当服务器,侦听特定端口"xxxx"上通过TCP传入的连接。连接到客户端后,将从客户端发送一个字节流,我的应用程序将处理这些字节流并将信息适当地保存在数据库中。到目前为止,我已经能够实现此功能。
要处理的场景:我需要处理一个特定的场景(可能很少见,但仍然如此)。由于网络条件,客户端-服务器连接有时可能会失效。在这种情况下,我需要我的应用程序等待连接重新建立并恢复从客户端读取字节流。
我对Java的套接字编程相对较新,正在寻找可行的解决方案。我想到了两种可能的解决方案(技术上可能可行,也可能不可行):
- 配置回调 - 我可以配置回调,以便在(重新)建立连接后立即启动 readFromClient() 方法。我不知道该怎么做。
- 添加事件侦听 器 - 如果与客户端的连接被视为事件,我可以注册一个事件侦听器并在(重新)建立连接后立即触发 readFromClient() 方法。我对如何做到这一点有一个基本的想法,并且也在尝试实施它。但如果有人能想出一个干净的方法,将不胜感激。
我不知道我是否在正确的方向上思考。但我认为这些可能是可能的解决方案。任何帮助将不胜感激。
...重新建立并恢复读取流...
关键是(在我的理解中):没有重新建立。如果连接消失(发生IOException),则没有更多要重新建立的连接。
通过使用 TCP,您不需要(或更少)关心网络状况。
如果你想知道一个连接是否处于活动状态,你必须使用心跳。
如果您想重新连接到客户,他必须为您提供可能性。
也许我不明白你在说什么,但你可以发布一些代码并显示错误情况(也许是一些错误)。