我想更好地了解网络可以做些什么,我目前正在开发一些安卓应用程序,我想以某种方式在WiFi和/或3G/4G上实现某种P2P连接。我知道在这样做的过程中会出现很多困难,但我仍然想知道如何开始解决这个问题,或者有一个方向。
我有一个想法,我认为如果它有效的话,我可以避免所有穿越NAT的麻烦(我绝对不会假装我是第一个想出这个想法的人):

Jim和John都连接到服务器。服务器将它们放在同一个盒子中,并相互转发消息。在某些时候,服务器对浪费带宽感到厌烦。他和吉姆有一个连接的插座,和约翰也有一个连接的插座。所以“不知何故”(也许是魔术般的),他把他的to-John-Socket给了Jim,反之亦然。
因此,新的场景是: Jim走过来对John说:“嘿,服务器,给我一个套接字”:服务器:好的,在这里等他来。约翰:嘿,服务器,给我一个插座给吉姆。服务器:哦,你在这里!吉姆,拿着约翰的插座。约翰,拿着吉姆的插座。再见了伙计们!
服务器回去做他的小生意,而吉姆和约翰做他们自己的事情。
我想肯定不是这么简单的。那么我该怎么做呢?如果我在某些时候需要穿越NAT网关,我该如何做(我自己,没有库)?
发布于 2012-06-28 19:30:16
我认为你的尝试是可以实现的,但如果你从零开始,那么做起来肯定是困难和耗时的。我不是网络编程方面的专家,但我对可能会遇到的复杂性有足够的了解。
如果您想了解一些网络编程的背景信息,那么即使您不熟悉Unix Network Programming,我也建议您阅读UNIX这本书。虽然它是非常技术性和详细的C代码,但它为套接字等提供了一个非常好的背景,因为套接字的想法来自UNIX。
如果我正在做类似的事情,那么我会尝试并查看一些开源项目,比如列出的here,甚至是Yahoo Messenger SDK。谷歌一下“开源p2p”可能也会给出一些提示,不过我想很多都是用C/C++写的。
https://stackoverflow.com/questions/11241839
复制相似问题