我做的是一个即时通讯工具,基于广域网的,使用UDP协议实现,有服务器端,消息通过服务器端中转,发送文件、视频、语言是点对点,在做发送文件的时候我发现两个客户端都处于不同的内网之中,文件无法发送,具体怎么实现NAT穿透,那位大侠给小弟指导一下,感激不尽,我的QQ:283637883,如果有源码那最好不过!谢谢了!帮小弟解决了问题,小弟重谢!
UDP的穿透NAT,基于的主要思路就是打洞。你的连接管理server,肯定是存储每一个client的公网IP与port的。所以当A需要和B通信的时候,首先A告诉server要和B通信了,然后server命令B发送数据包到A,这个数据包会被A丢弃,但是这个操作在B处打了个洞,这样A发送数据包到B的时候,就能被放通到B。
nat穿透的话,p2p的做法是公网某一些有公网ip的机器来充当代理,帮助转发数据包。
而你这个程序的话,肯定是不现实的,客户会非常不满意。
因此我想你只能考虑使用服务器来做公网传输代理,而且需要充分的考虑可扩充性,以方便需要的时候可以加机器解决。