【问题标题】:Persistent TCP connection client / server持久 TCP 连接客户端/服务器
【发布时间】:2011-02-28 21:16:33
【问题描述】:

我正在通过 3G 构建从 android 设备到服务器的客户端服务器应用程序。 由于提供 3G 的网络运营商,客户端设备位于 NAT 之后。因此,服务器不可能与客户端建立连接。我可以采用投票的方法,但是在这样做之前,我想用尽所有其他选项。是否有某种方法(我还没有找到)在客户端和服务器之间保持 TCP Socket 连接打开,以便服务器能够启动与客户端的通信?

这种情况是,基于服务器状态的非常定期的客户端/服务器通信会非常定期地更新 - 我们每隔几秒钟就会交谈一次。 UDP在这里会是更好的选择吗?也许不是,因为 NAT 问题仍然把它敲在头上。

我还有其他选择吗?

非常感谢

【问题讨论】:

  • 你在问如何让它保持打开状态(几秒钟的窗口) - 我想知道它是如何关闭你的。
  • 不是。但是,如果我使用 ObjectOutputStream 将对象写入服务器,我可以稍后在套接字仍然打开的情况下重用它吗?还是我需要重新实例化 ObjectOutputStream?我似乎在这方面找不到任何东西。谢谢

标签: java sockets client


【解决方案1】:

NAT 并不意味着服务器不能发送任何东西。只需从客户端打开一个连接,让服务器发送它记录的任何事件。您可能还想包含一个简单的心跳协议,以使客户端和服务器注册断开的连接,并使 NAT 知道该连接仍在使用中。

【讨论】:

  • 您好。谢谢回复。服务器可以发送信息,尽管只是响应来自客户端的 ObjectOutputStream.writeObject(...)。由于 NAT 问题,它无法启动与客户端的连接。
【解决方案2】:

只需打开一个套接字并使用它,包括 ObjectOutputStream。如果中间系统断开连接,您将收到异常,然后您关闭并重复。

【讨论】:

    猜你喜欢
    • 2021-08-12
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2022-01-16
    • 2021-11-06
    • 2019-06-06
    • 1970-01-01
    • 2019-06-18
    相关资源
    最近更新 更多