最新文章
热门文章
WinPE操作系统的使用及简介(破解 
QQ象棋,联众象棋游戏如何作弊 
如何解决网页中图片大小类型等属 
总结几种结构体初始化方法 
关于硕士毕业论文自动生成目录和 
VC建立类向导(class wizard)错误 
C++中取随机数函数rand和srand用 
VC编写自己构造http协议数据的po 
如何查看得到windows系统管理员帐 
由DCOM权限引起的在windows2003上 
当前位置:李露的博客 >> 电脑技术 >> 浏览文章
echoware做中转连接的使用小结与实例(1)
更新日期:2010年04月12日  来源:本站原创  作者:天漏客   访问次数:次  【字体:

echoware是一个用作中转服务的系统。其基本原理是这样的:当网络双方有人在内网时,那么想要主动连接内网的用户,直接连是不行的。现在有的方式是使用TCP和UDP打洞,像很多P2P软件就是这样处理的,这种方式可行性也比较高,80%以上的网络都可以支持(主要是内网NAT设备支持)。还有一种方式就是使用第三方作为中转,这种方式能保证100%的连接到达,但因为有第三方中转,所有双方的数据交互会比直接交互慢。

今天就讲一个使用echoware这个服务作为中转的使用实例。

先大概说一下运行流程。客户端C要连接服务端S,直连是最简单和普通的方式,但如果有一方处于NAT后面,或者防火墙后面,那么直连就会出问题。使用UDP打洞技术,是有一个第三方服务器告诉C和S双方的地址,然后让他们自己主动连出去。echoware的流程则是,C和S都连接上第三方中转服务器echoServer,然后再通过echoServer建立连接,并且以后的数据交互也要通过echoServer。

echoware官方提供的例子程序有好几个,我刚开始是整了很长时间才把这个逻辑思路搞清楚。严格说起来,它的运行流程由五部分组成:客户端C,客户端的echoware——Cechoware,echoware中转服务器echoServer,服务端的echoware——Sechoware,服务端S。

客户端C只需要连接Cechoware,服务端S实际上也只需要连接Sechoware,他们两个根本就不需要连接网络,都只是连接的本机的echoware端。然后Cechoware和Sechoware去连接网络,就是连接echoServer。所以在使用时一定要把这个逻辑思路搞清楚,不然编程去做时,死活都连不上。

我先把例子程序和代码贴上:echoware做中转连接的使用小结与实例(1) [点击浏览该文件:EchowareTest.zip]

客户端和服务端的运行截图:

echoware做中转连接的使用小结与实例(1)

echoware做中转连接的使用小结与实例(1)

服务端的编写流程主要是这样:

WSAStartup启动套接字
socket创建套接字
bind绑定端口
listen开始监听
SetPortForOffLoadingData设定监听的端口
ConnectProxy开始连接echoServer
连接成功了就可以accept了,
最后是recv。

这里要注意的是,服务端S必须先绑定端口,然后再把绑定的端口告诉Sechoware,这样Sechoware才会通过这个端口与S进行交互。

客户端会有写差别,主要流程是:

ConnectProxy连接echoServer
EstablishNewDataChannel通过echoServer和服务端建立通道(服务端上线的话,就可以建立成功)
WSAStartup启动套接字
socket创建套接字
connect服务端(实际上是连接的Cechoware)
send发送信息
recv接收了。

 

 

发表评论】【告诉好友】【打印此文】【收藏此文】【关闭窗口
上一篇:VS2005写的一个Windows服务控制类+测试程序 下一篇:echoware做中转连接的使用小结与实例(2)

Copyright 2006-2012 Powered by LiLu.NAME,李露的博客 All Rights Reserved.
E-Mail:lilu.name#gamil.com(注意是gmail,自己改) QQ:285252760
苏ICP备08016526号