日期:2014-05-16  浏览次数:20879 次

udp nat 穿透不了啊
最近被老师坑了,搞起了p2p nat穿透,因为我们要实现广域网通信,前天在网上下了份别人的p2p的代码(某前辈04年写的网上到处贴的是)研究起来,代码分为客户端和服务器端,测试在局域网内可以用,但是高兴的在淘宝上整了个 带公网ip vps之后,把服务器程序放到vps上之后,在测试下没反应,穿透不了啊。公网vps ip(199.192.156.26),前面是在学校的实验室测的,后面有跑到寝室用adsl拨号的网测试了下,服务器还是没反应啊!
下面是客户端连接服务器的代码(udp穿透):

PrimaryUDP = mksock(SOCK_DGRAM);
BindSock(PrimaryUDP);
cout<<"Please input server ip:";//199.192.156.26
cin>>ServerIP;
cout<<"Please input your name:";//xxx
cin>>UserName;
ConnectToServer(PrimaryUDP, UserName, ServerIP);//通过这个函数能连上公网上的服务器吗???

求各位大神指点下,很急啊!!
------解决方案--------------------
1 :你的nat类型,一共四种,如果是全对称的nat,基本没有的可能性
2 :穿透使用的就是nat转换中的udp 端口可以在一定时间内接受数据的原理做的,建议你去找一下linux上的穿透库,很多,sip之类的有很多可以参考的东西
3:你的代码没有头绪,不知道用的什么库怎么着问题