Chinaunix首页 | 论坛 | 博客
  • 博客访问: 342679
  • 博文数量: 72
  • 博客积分: 2130
  • 博客等级: 大尉
  • 技术积分: 857
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-05 16:10
文章分类

全部博文(72)

文章存档

2010年(5)

2009年(14)

2008年(53)

分类: LINUX

2009-08-03 18:20:15

折腾了一星期总算测试成功了,分享一下
首先介绍一下测试环境:
用了三台机器h1, h2, h3,三个路由r1, r2, r3,两台机器h1, h2分别放在其中两个路由r1,r2后面,然后r1, r2和h3分别放在r3后面,r3接外网,h1,h2,h3上都装的是ubuntu8.10
打开源代码
执行gcc server.c proto.h -o server
执行gcc client.c proto.h -o client -lpthread
将生成两个可执行文件server, client
把client放在h1, h2上,把server放在h3上
首先在h3上执行./server启动服务器,
然后在h1上执行./client启动客户端,输入服务器的IP地址和h1上用户名(随便起,当然不要超过20个字符)
在h2上也执行./client启动客户端,输入服务器的IP地址和h2上用户名(也是随便起,当然不要超过20个字符)
根据命令提示在每个客户端上执行getu刷新用户列表,然后就可以通过send命令互相交流了。
注:代码参考网上的,由于没做过windows下编程和C++,故改成纯c的linux下代码,如有版权问题,敬请通知,感谢那些大牛们
文件:udp_hole_punching.tar.gz
大小:281KB
下载:下载

阅读(7758) | 评论(7) | 转发(3) |
给主人留下些什么吧!~~

jluliuchao2009-08-11 21:16:25

呵呵,程序没加注释,明天去实验室慢慢研究吧。 先谢谢你了,应该对我有帮助

jluliuchao2009-08-11 21:04:49

能不能简单说下原理?它是怎么穿过路由器的?最近也遇到了这样的问题,需要在不同路由器下相互访问,我想用端口映射实现,但那样不太好