首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

P2P UDP 打洞失败,求见教

2013-01-21 
P2P UDP 打洞失败,求指教首先两个客户端通过服务端交换公网IP然后已经成功接收对方公网IP的客户端马上分别

P2P UDP 打洞失败,求指教
首先两个客户端通过服务端交换公网IP
然后已经成功接收对方公网IP的客户端马上分别对对应公网IP发送
但是无论怎样发送都接收不到
是不是还要做点什么的?

试了网上很多例子都不成功
[解决办法]
那就靠猜测,通过连续发送两次数据包根据返回的端口号猜测端口变化规律
[解决办法]
1,猜是一种
2,既然打通了,那就对指定的ip  指定的端口发送数据
3,接收方 监听对应的端口吧
4,这个还好像与路由或交换机的是否支持和设置有关系
5,一起研究吧 不太熟悉这方面
[解决办法]
不是说得到对方公网ip就可以发送成功的  排除路由的问题(牵扯到端口映射)  也是要A先向B发生打洞

报文  这时B的路由肯定会丢弃  但是这时A的路由会“认识”B(因为你往B发了数据)  这时候再通过

发送报文给服务器  让服务器“告诉”B  我的路由已经认识你了  你发消息我 让你的路由也“认识”我

然后B收到服务器的打洞命令  发送打洞报文给A  A的路由已经“认识”B 所以链路已通  可以顺畅使用

udp开始通信  
[解决办法]
两个客户端是不是在同一局域网?
[解决办法]
其实就是根据服务器的中转  先得到互相的ip信息  然后一方先发送报文让自己的路由不会丢弃对方的报文

然后通过服务器通知对方 也向你发送报文(因为这时候你怎么发送对方都是收不到的) 当对方知道你已经打洞了

再向你发送报文  这时候互相之间就已经“认识了”  后续就可以正常的发送需要的数据了
[解决办法]
你的两个客户端是用几个路由出去的?
[解决办法]

引用:
引用:
其实就是根据服务器的中转  先得到互相的ip信息  然后一方先发送报文让自己的路由不会丢弃对方的报文

然后通过服务器通知对方 也向你发送报文(因为这时候你怎么发送对方都是收不到的) 当对方知道你已经打洞了

再向你发送报文  这时候互相之间就已经“认识了”  后续就可以正常的发送需要的数据了

通知对方有没有打洞这步就没做,我就是……


就是因为你没做  所以A向B发的包永远被丢弃  你还不明白udp打洞的原理...
[解决办法]
引用:
引用:看了下逻辑没什么问题,当时我做实验的时候是通过两个路由两个ADSL出去,服务器收到的外网地址是不同的.你这种同外网地址相同的没有做过,可能路由会做某些处理.

两种情况都试过,不知道为什么不行,你以前做的成功了吗?能不能放源码出来看看,或者大概逻辑上是否和我的一样?


源码

热点排行