持久TCP连接客户端/服务器

时间:2011-02-28 21:16:33

标签: java sockets client

我正在通过3G从Android设备到服务器构建客户端服务器应用程序。 由于提供3G的网络运营商,客户端设备位于NAT后面。因此,服务器无法与客户端建立连接。我可以采用一种轮询方法,但在此之前,我想用尽所有其他选择。有没有办法(我还没有找到一个)在客户端和服务器之间保持TCP套接字连接打开,这样服务器就可以启动与客户端的通信了?

场景是基于服务器状态的非常常规的客户端/服务器通信会定期更新 - 我们会每隔几秒钟进行一次会话。 UDP会是一个更好的选择吗?也许不是因为NAT问题仍然在敲头。

我还有其他选择吗?

非常感谢

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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