怎么用INDY的IDeUDPServer实现UDP打洞功能(200分)

  • 主题发起人 主题发起人 无疯无禄
  • 开始时间 开始时间

无疯无禄

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么用INDY的IDeUDPServer实现UDP打洞功能
和UDP打洞原理
 
帮你顶一下.
 
帮顶一下
 
要不要给你发个源代码啊?我正在做,嘿嘿!不过也是下载了源码来修改的.
 
何谓打洞功能啊
 
在google上去搜索nat(network address translation),你就知道什么是打洞了。哈哈!
 
感觉没什么麻烦的 UDP打洞就是中转在处理UDP链接的时候会指定一个外网端口保持映射到内网的某个IP某个端口上
比如说你要实现内外网通讯就要求先由内网的发一个消息给外网的,外网的记住是哪个IP哪个端口(比如用INDY就记录ABINGDING.IP,ABINDING.PORT)发过来的再把要传送的信息发回那个端口就应该回映射到内网的发起者了
貌似是这样
 
看看网上的介绍很好懂~但是也有很多问题~
比如: 有一个拥有公网(Pub) IP的主机S,一内网主机C. 现在 S要通过NAT与C通信.
如果S直接发信息给C(经过NAT),因为S并不知道C在NAT上对应的Pub Ip和port,发送肯定不成功~这时,需要服务器通知C,要求C先向S发送一个信息,这样,NAT就记录了C的信息(建了Session),然后,S再向C发送消息,NAT搜索记录就可以找到C对应的Pub IP和port,可以发送了!
问题:"需要服务器通知C,要求C先向S发送一个信息"----这里的'通知C'是由自己写的'p2p server'程序发出的,还是由NAT自动完成的?
如果是由的'p2p server'程序发出,那server程序岂不也要记录NAT上的信息?这又该如何实现?
如果是NAT自动完成的,那么我想不出p2p Client 和 p2p server 有什么不同?
 
介绍个例子给你..不知道是不是...http://www.2ccc.com/article.asp?articleid=3154
 
大富翁上有这个demo了,嘿嘿
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3629672
 
后退
顶部