我正在编写一个在端口4900上运行的自定义p2p程序.在某些情况下,当人员在路由器后面时,无法从Internet访问此端口.
是否有自动方式从互联网访问端口.我不太确定其他p2p应用程序是如何工作的.
任何人都可以对此有所了解吗?
是否有用于P2P网络的任何良好的跨平台C++库(最好是UDP,但TCP也可以工作).最初我打算使用libjingle,但由于它们没有提供任何预编译库并且运行一个非常混乱的构建系统,所以我现在把它放在一边太复杂了.
这是一个广泛的问题,我发现了很多关于这个主题的信息.
可能的技术
这些都没有完全实现的对等库,或者我没有找到这样的.
事实上,我对任何类型的游戏库都不感兴趣(我没有针对这些问题)
我考虑过的问题
GameKit is compatible only with other GameKit
我想在尽可能多的设备之间进行有效通信,而无需使用移动数据(3G,HS*PA,LTE)或WIFI AP作为中间点.
而不是远距离连接人,真的就像PAN通过蓝牙.
因此,我需要具备哪些功能
我想要的功能
目前有什么我可以用于提到的功能吗?
目前,我正在研究p2p应用程序模型.我相信即使对等体之间共享数据,仍然有一个数据库服务器在某处保存用户帐户信息.以Skype为例.虽然用户建立了p2p通信,但我相信他们正在使用PostgreSQL.我想知道的是有没有p2p数据库实现,所以数据是在客户端计算机之间分发(和加密)而不是托管在服务器场中?
如果没有,实施p2p数据库会非常困难/不切实际吗?
我开始探索使用p2p连接与其他连接的选项,所以我在JAVA中为Android设备编写了一个简单的套接字程序,其中用户可以共享简单的消息p2p(我当时对NAT没有任何想法).我了解了NAT,所以我现在需要与另一个用户建立TCP连接,该用户使用服务器进行发现,但有效载荷是p2p传输的.我也看了一下XMPP(协议如何工作的一个很好的和详细的说明是这里)和UPnP,但我不知道如何实现它们.
另一个有趣的问题是BitTorrent,因为它们可以在任何设备上工作,甚至可以在NAT后面工作.我无法解释BitTorrent的工作原理.
我研究了很多,但我被卡住了.
我的问题是:
如何编写一个简单的bittorrent应用程序.像使用bittorrent库的"hello world",我的意思是最简单的应用程序来理解bittorrent的工作.我更喜欢python或C/C++实现,但它可以是任何语言.平台也不是问题,但我更喜欢Linux.
关于图书馆的建议,我已经从http://sourceforge.net/projects/bittorrent/develop下载了一个(我认为官方bittorrent)的源代码 .但是,我在http://en.wikipedia.org/wiki/Comparison_of_BitTorrent_clients#Libraries上看到了很多其他库.我很感激有关这方面的建议.
如果只有一台笔记本电脑,如何测试应用程序.
我正在设计一个在端口30000上工作的p2p应用程序.我的路由器不是UPnP所以我需要将端口转发到路由器.但Skype是另一个p2p应用程序在我的电脑上没有端口转发.当我用wireshark分析它时,我发现它使用的是UDP端口48980,58544.我正在使用c ++.
在Python库在这里它会为纳特即插即用路由器.是否可以以编程方式将端口转发到路由器,而不管路由器和操作系统的类型如何.用c ++或任何其他语言做什么的方法应该是什么.
我对线级协议的想法不是很清楚.我听说BitTorrent使用它并读到线程级协议可以被认为是API的反面.我读RMI调用可以被认为是线程协议,但我仍然有点困惑.有人可以用更好的方式解释这个吗?
我想在两个或多个不同的node.js应用服务器之间启用基于套接字的p2p通信.我正在使用socket.io来处理给定服务器和它所服务的Web应用程序之间的所有这种通信 - 但我正在寻找的是一种通信服务器到服务器的方式.
我最初认为它会像这样简单:
var io = require("socket.io");
var socket = io.connect("my remote endpoint");
Run Code Online (Sandbox Code Playgroud)
但是,事实证明服务器端socket.io实现不提供"连接"方法,只提供listen方法.
为什么是这样?为什么我不能将节点应用程序服务器视为在其他地方运行的socket.io服务器的客户端?有什么办法可以实现这个功能吗?
任何人都可以确认Android框架内目前允许的点对点通信方法是什么?我需要传输json字符串,我现在正在使用短信工作正常,但问题是数据也最终成为大量的短信.我已经阅读了Reto Meier的第一版专业Android应用程序开发,他说由于安全问题,数据传输选项没有实现.
这有没有改变,你将如何进行数据的点对点传输?