我正在通过3G从Android设备到服务器构建客户端服务器应用程序。 由于提供3G的网络运营商,客户端设备位于NAT后面。因此,服务器无法与客户端建立连接。我可以采用一种轮询方法,但在此之前,我想用尽所有其他选择。有没有办法(我还没有找到一个)在客户端和服务器之间保持TCP套接字连接打开,这样服务器就可以启动与客户端的通信了?
场景是基于服务器状态的非常常规的客户端/服务器通信会定期更新 - 我们会每隔几秒钟进行一次会话。 UDP会是一个更好的选择吗?也许不是因为NAT问题仍然在敲头。
我还有其他选择吗?
非常感谢
答案 0 :(得分:4)
NAT并不意味着服务器无法发送任何内容。只需打开客户端的连接,让服务器发送它记录的任何事件。您可能还希望包含一个简单的心跳协议,以使客户端和服务器注册断开的连接,并使NAT知道该连接仍在使用。
答案 1 :(得分:2)
只需打开一个套接字并使用它,包括ObjectOutputStream。如果中间系统断开连接,您将获得异常,然后关闭并重复。