p2p打洞成功,但ADSL网络用户收不到信息。

Torch009 2008-04-29 11:13:37
做个p2p的东西,服务器是公网的,客户端A是ADSL网络,客户端B不是ADSL。A向B发消息时B能收到,但B向A发送时A收不到,测试发现所有的ADSL网络都有这种问题,用服务器转发当然可以收到(打洞肯定是成功了),现在不想让服务器承受那么大的压力,有什么办法可以不通过服务器转发,而又能让ADSL网络的用户A收到B发的消息呢?
...全文
284 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
THer 2009-03-30
  • 打赏
  • 举报
回复
刚好用到了,不错
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
好像没那么简单,呵呵.
lake_cx 2008-04-29
  • 打赏
  • 举报
回复
楼主你“打洞”没成功嘛,成功的话应该是欺骗了NAT路由器并在两个不同的子网中建立P2P连接。。。
hurryboylqs 2008-04-29
  • 打赏
  • 举报
回复
如果是你的路由器不支持穿透那就没办法了,这时可以考虑UPNP端口映射
KeSummer 2008-04-29
  • 打赏
  • 举报
回复
如果A想连接B网络中的一台主机C,那么服务器告诉C,让C主动去连接A就行了。这是反向连接。
Torch009 2008-04-29
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080429/11/31dea162-88f5-4fd6-a3c8-6d972747cbf8.html

这是另外一个帖子。
mrhonghong 2008-04-29
  • 打赏
  • 举报
回复
"打洞"这词有意境...帮顶了..
cnzdgs 2008-04-29
  • 打赏
  • 举报
回复
通常有以下几种做法:
1、由内网向公网发起连接;
2、内网设置端口映射,(需要有固定的公网IP);
3、通过服务器转发数据包;
4、所有客户端都登录服务器,从服务器获取对方地址、端口,“打洞”。
其中借助服务器转发已经被排除了,从剩下的三种里面选吧。
Torch009 2008-04-29
  • 打赏
  • 举报
回复
to 7楼,是的。
cnzdgs 2008-04-29
  • 打赏
  • 举报
回复
你所说的“ADSL网络”是指多台电脑通过ADSL路由上网吗?
bet_myfyx 2008-04-29
  • 打赏
  • 举报
回复
这个? 我在这个方面不太熟悉 紧密关注中>>>...学习~
lake_cx 2008-04-29
  • 打赏
  • 举报
回复
而且是不经过端口映射的,一般是利用公网服务器辅助打洞
一般是A、B两台内网机器都连接公网服务器,然后A想直连B的话就向公网服务器转发请求,让B主动新建一个指向服务器的连接,此时B所在子网的NAT路由器会新建一个NAT地址转换(其实就是个端口映射),服务器就会知道B新建的连接对应的外网端口号,然后将端口号告诉A,并断开B新建的这个连接。B马上监听新建连接的那个绑定端口,同时A马上连接B对应的公网IP及公网端口(服务器告诉A的那个端口号)。一条NAT地址转换规则会在路由器中存在一段时间,所以A连接B是可行的。但有的路由器的NAT地址转换有限制,例如本来是连出的链路,路由器就不接收连入的数据包了,这样会导致A仍旧无法连接B。
上面包含个人理解部分,不保证完全正确。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧