【问题标题】:How to make a stable tcp-socket connection without a server response?如何在没有服务器响应的情况下建立稳定的 tcp-socket 连接?
【发布时间】:2015-05-04 00:45:33
【问题描述】:

我需要一些帮助来解决以下问题:

我在构造函数中打开一个 tcp-socket,然后继续通过对象输出流向服务器提供一个对象。我无法控制服务器,也没有收到任何回复。

如何检测到连接丢失?尝试写入时总是会收到 IOExeption-Error 吗?因为根据 javadoc,一旦连接成功,大多数检查对我来说基本上是无用的。

此外,重新连接套接字的最佳方法是什么?将引用设置为“Null”然后创建一个新的?

这是我目前的做法:

我有一个状态列表,其中有以下状态: 套接字成功;套接字失败;消息成功;消息失败;

我的想法有点像状态机,所以首先检查最后一个状态是什么。如果连接成功或最后一条消息成功,则尝试发送消息。当我收到 IOExeption 然后设置状态 MessageFailure 时,将消息保存在本地,直到我再次成功连接。

或者对于这种情况有什么推荐的模式?

【问题讨论】:

  • “因为根据 javadoc 一旦连接成功,大多数检查对我来说基本上没用”是什么意思?为什么没用?

标签: java sockets tcp


【解决方案1】:

清除你所有的问题。如果与服务器的连接丢失,则客户端将抛出 IOException ,这将终止应用程序,但如果您已处理异常并尝试重新连接服务器并重新建立输入输出流,您的消息功能将再次启动。您使用的预定义消息仅在服务器和客户端之间存在连接时才会传播。因此,当连接丢失时,您将得到 IOException,当您处理该异常并尝试重新连接时,应该建立一个新的输入输出流,该流将承载您的消息传递服务。

【讨论】:

  • 有没有必要把每件事都说两遍?
  • 解释和结论最终我只想说清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2015-06-13
  • 2017-02-03
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
  • 2021-01-06
相关资源
最近更新 更多