我们正在开发一款通过wifi发送和接收短信的Android应用。 我们使用TCP套接字进行此通信(IP地址和随机端口),但问题是如果我不允许来自路由器的“端口转发部分”的这些端口号,则无法发送消息。 有没有办法摆脱这个问题?
答案 0 :(得分:0)
您可以从所选范围内随机选择端口,并在路由器中转发该范围,如下所示:
int port =(Math.abs(random.nextInt()))%3000 + 1024;
这样我在1024和2999之间生成了一个随机数。或者只选择一个固定的端口。
答案 1 :(得分:0)
如果两个客户端都在不同的限制性防火墙后面,您应该考虑一下打孔,其中两个客户端都打开与第三个服务器的连接,然后第三个服务器预测在NAT上打开的端口:NAT traversal with Java,{{3 }}。请注意,这通常是P2P应用程序(即客户端到客户端)所需要的,如此处所述。是的,它非常复杂和讨厌:(
您可能最好使用Amazon Cloud Services等方式将消息存储在云端,并使用基于推送的机制在消息接收时通知对方,可能使用长轮询HTTP。