我目前正在开发一个需要两个设备通过 TCP 通信的 android 应用程序(我不能静默地丢失数据包,所以 UDP 不可用)。我需要尽可能快的通信(即我有一个低可接受的延迟阈值),但连接将是短暂的(可能少于 2 分钟)。电话将连接,做他们的事情,然后关闭连接。
我已经对 NAT 打孔进行了相当多的研究,但似乎没有为 java 和 android 实现可靠的 tcp 打孔方法。因此,似乎我唯一的选择是开发一个服务器应用程序,它将“代理”两个设备之间的 tcp 通信。
我有两个问题:
1)我不想重新发明轮子:有没有一个简单的 tcp 代理已经写好了我可以使用?(注意:不是任何类型的 http 代理 - 因为我需要低延迟,我只是希望在设备上的两个 tcp 套接字连接之间传递一个非常小的有效负载)。服务器的唯一目的是避免 NAT 问题。
2)如果没有,有没有人有这种事情的经验,他们会推荐什么?我玩过 Java NIO 的想法,或者可能是为每个连接创建一个新线程的服务器(问题是如何链接适当的“客户端”线程来来回传递信息)。还是 Java 甚至是用于服务器端的最佳语言?
我已经阅读了一些通过谷歌聊天服务使用 XMPP 的建议(见这里),但我不想要 XMPP 的开销。
任何方向或建议将不胜感激。