通过基于服务器的TCP代理进行Android设备到设备的通信

通过基于服务器的TCP代理进行Android设备到设备的通信,android,sockets,tcp,p2p,Android,Sockets,Tcp,P2p,我目前正在开发一个android应用程序,它需要两个设备通过TCP进行通信(我不能悄悄地释放数据包,所以UDP不可用)。我需要尽可能快地进行通信(即,我有一个可接受的低延迟阈值),但连接会很短(可能少于2分钟)。手机将连接,完成他们的工作,然后关闭连接 我已经做了很多关于NAT打孔的研究,但是似乎没有一种可靠的tcp打孔方法可以在java和android上实现。因此,我唯一的选择似乎是开发一个服务器应用程序,它将“代理”两个设备之间的tcp通信 我有两个问题: 1) 我不想重新发明轮子:是否有一

我目前正在开发一个android应用程序,它需要两个设备通过TCP进行通信(我不能悄悄地释放数据包,所以UDP不可用)。我需要尽可能快地进行通信(即,我有一个可接受的低延迟阈值),但连接会很短(可能少于2分钟)。手机将连接,完成他们的工作,然后关闭连接

我已经做了很多关于NAT打孔的研究,但是似乎没有一种可靠的tcp打孔方法可以在java和android上实现。因此,我唯一的选择似乎是开发一个服务器应用程序,它将“代理”两个设备之间的tcp通信

我有两个问题:

1) 我不想重新发明轮子:是否有一个简单的tcp代理已经编写好,我可以使用?(注意:不是任何类型的http代理-因为我需要低延迟,所以我只是希望在设备上的两个tcp套接字连接之间传递一个非常小的负载)。服务器的唯一目的是避免NAT问题

2) 如果没有,有没有人有这方面的经验,他们会推荐什么?我曾经尝试过JavaNIO,或者是一个为每个连接创建一个新线程的服务器(问题是如何链接适当的“客户机”线程来来回传递信息)。或者Java甚至是服务器端使用的最佳语言

我已经阅读了一些关于通过谷歌聊天服务使用XMPP的建议(请参阅),但我不想要XMPP的开销


如果您有任何指导或建议,我们将不胜感激。

关于您问题的直接答案:

1) 我发现这不是一个好方法,它实际上取决于服务器上有什么可用的方法。不久前我确实用PHP写过一篇文章,它非常简单快捷,可以与大多数服务器一起使用。我用这个作为指导

如果你能运行编译的C++二进制,你可以在这里看,它是我们考虑的替代:

2) 请参阅PHP选项1的答案,我没有用Java从头开始编写的经验

作为NAT遍历的旁白。。。我一直在为我正在从事的项目调查相同的NAT问题,我发现有两个选项需要NDK,但在Android上可以很好地进行NAT遍历。 pjnath(GPL):

www.pjsip.org/pjnath/docs/html

code.google.com/p/csipsimple/source/browse/trunk/pjsip_android/?r=201

利伯尼斯(LGPL):


nice.freedesktop.org/wiki/

谢谢您的回复。我没有考虑过使用NDK访问各种NAT遍历库。。。我在Java中集成了一些东西进行测试,但仍然在寻找一个更长期的解决方案。我来看看php。