首页 新闻 会员 周边 捐助

C# NAT穿透 两个不同内网的客户端传送文件

0
悬赏园豆:5 [已解决问题] 解决于 2012-11-12 15:20
我做的是一个即时通讯工具,基于广域网的,使用UDP协议实现,有服务器端,消息通过服务器端中转,发送文件、视频、语言是点对点,在做发送文件的时候我发现两个客户端都处于不同的内网之中,文件无法发送,具体怎么实现NAT穿透,那位大侠给小弟指导一下,感激不尽,我的QQ:283637883,如果有源码那最好不过!谢谢了!帮小弟解决了问题,小弟重谢!
Coder²º¹5的主页 Coder²º¹5 | 初学一级 | 园豆:15
提问于:2012-07-06 10:38
< >
分享
最佳答案
0

UDP的穿透NAT,基于的主要思路就是打洞。你的连接管理server,肯定是存储每一个client的公网IP与port的。所以当A需要和B通信的时候,首先A告诉server要和B通信了,然后server命令B发送数据包到A,这个数据包会被A丢弃,但是这个操作在B处打了个洞,这样A发送数据包到B的时候,就能被放通到B。

收获园豆:1
BLoodMaster | 初学一级 |园豆:135 | 2012-09-18 10:42
其他回答(2)
1
收获园豆:2
dudu | 园豆:30459 (高人七级) | 2012-07-06 11:27
0

nat穿透的话,p2p的做法是公网某一些有公网ip的机器来充当代理,帮助转发数据包。

而你这个程序的话,肯定是不现实的,客户会非常不满意。

因此我想你只能考虑使用服务器来做公网传输代理,而且需要充分的考虑可扩充性,以方便需要的时候可以加机器解决。

收获园豆:2
荣耀属于跪拜猫 | 园豆:832 (小虾三级) | 2012-07-07 01:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册