我们正在开发一个通过 wifi 发送和接收短信的安卓应用程序。我们使用 TCP 套接字进行此通信(IP 地址和随机端口),但问题是如果我不允许路由器的“端口转发部分”中的这些端口号,则无法发送消息。有没有办法摆脱这个问题?
问问题
220 次
2 回答
0
您可以从选定范围内随机选择端口并在路由器中转发该范围,如下所示:
int 端口 = (Math.abs(random.nextInt())) % 3000 + 1024;
这样我就生成了一个介于 1024 和 2999 之间的随机数。或者只是选择一个固定端口。
于 2012-05-10T20:14:36.567 回答
0
如果两个客户端都在不同的限制性防火墙后面,您应该研究打孔,其中两个客户端都打开与第三台服务器的连接,然后第三台服务器预测在 NAT 上打开的端口:NAT traversal with Java , https://stackoverflow.com /questions/917385/nat-traversal-with-java/。请注意,正如您在此处所描述的,这通常是 P2P 应用程序(即客户端到客户端)所需要的。是的,它非常复杂和讨厌:(
您最好使用 Amazon Cloud Services 之类的东西将消息存储在云中,并使用基于推送的机制来通知对方收到消息,也许使用长轮询 HTTP。
于 2012-05-10T20:29:06.913 回答