没有一个自己的中间服务器,可以记录client端的公网ip和端口,再通知其他端。
我想,如果client端能主动得到自己某个端口被nat映射后的公网ip和端口,还可以通过其他方式通知。
或者各位高人还有其它在没有自己的中间服务器的情况下,实现p2p的方案,也请不吝赐教。
我想,如果client端能主动得到自己某个端口被nat映射后的公网ip和端口,还可以通过其他方式通知。
或者各位高人还有其它在没有自己的中间服务器的情况下,实现p2p的方案,也请不吝赐教。
解决方案 »
- 一个关于鼠标手势的小问题,能帮忙回答一下吗?
- 有没有访问NTFS文件系统USN日志的API函数
- 为什么不能把显示选项中的窗口改为全屏显示?
- 问一下关于directx开发的设置问题
- 股票软件中的领先指标是怎样计算出来的
- 怎样把ascii码发送给客户端?
- 谁知道怎样用代码删除文本文件中的内容.
- 高手,我想请教一个问题,现在我想在一个窗体上点击一个按钮,主要的功能就是计算,我现在要计算很大的东西,要花费很长的时间,想在这个
- VC Debug版本程序运行3天出错。code at 0x10211920
- 在VC中根据什么决定在类中定义的成员函数的权限为Public、Protected、Private?
- 各位大人,做程序界面的时候,那些BMP文件怎么打包压缩成一个文件
- BYTE buffer[0x1000]这句话什么意思啊
要不你就让两边都开着QQ或MSN,通过它们send message啊
我不是说没有中间服务器,而是说没有自己的中间服务器。
如果我有自己的中间服务器,那client端通过nat连到中间服务器,中间服务器马上就能查出这个连接来自何方,端口号是几。但现在不行。所以必须用其它的方法。比如client端能主动得到自己某个端口被nat映射后的公网ip和端口,那它可以将这个信息发送到一个邮件服务器上,另一端去查询邮件,就知道了。我还有一个思路是利用msn 或qq等的中间服务器,但这需要解析他们的协议,也很烦。
利用中间服务器应该是必需的,只是没有自己的中间服务器好利用。 各位明白我的意思了么?
UDP的打洞技术,必须先和服务器取得联系,通过服务器作为两个用户的“中介”,之后才可以抛弃中间服务器,达到P2P的效果。
至于如何穿越中间的代理服务器,请参考http://community.csdn.net/Expert/topic/4201/4201996.xml?temp=.5598566
呵呵,其实是用email交换数据。至于效率嘛,当然就是惨不忍睹了
假设全球有30千万个IP地址,某P2P软件有10万在线用户,其中有3万个用户在公网上。
则每个用户启动连接在1秒内(正常网络状态下节点存在的估计平均时间值)可以连接到一个用户的概率为1/10000,连接不上的概率为9999/10000,每个公网用户被连接上的概率为1/30千万 * 10万 = 1/3000,没有被连接的概率为2999/3000。这里都假定连接不上的超时时间为3秒。
如果每个用户同时向300个地址发起连接,则每个用户一次连接到别人的概率为3/100,公网用户被连接到的概率为1/10,一个内网用户可以建立连接的概率为3/100。按照概率论,以3秒为一轮,一个内网用户76轮连接到一个用户的概率为90%,用时3*76=228秒,不到4分钟。从概率的角度上讲,通过传递相互连接到的PEER,在4分钟之内几乎全世界的PEER都可以连接起来。
要实现这种纯P2P的连接,关键一点就是要求用户群达到一定数目。
如果连接策略做的好,花费的时间会更短。