DELPHI仿花生壳(外网穿透内网)

有段时间公司在使用花生壳来完成网络穿透。主要使用的功能就是在内网络架设服务器软件,然后在外网进行访问,因为用的是花生壳的最便宜的价格,所以有的时候会掉线。
所以决定写一下类似于花生壳的程序:
1、有固定IP的服务器一台。
2、主要完成的功能是访问固定IP服务器的地址,来完成访问一个动态IP内网中的服务端软件。
3、内网中服务端软件对外提供WEB服务。
4、固定IP服务器上需要有数据库(任何一种数据库都可以,或者用个文本也一样)
完成思路:
1、在有固定IP的服务器上制作一个对外提供WEB服务的服务端软件,暂时叫中间件。
2、在动态IP的内网的任意电脑中制作一个与固定IP服务器进行通讯,与内网的服务端通讯的软件,暂时叫通讯器。
3、申请几个二级的域名,并指向固定IP服务器。
一、中间件的完成:
1、使用IDHTTP控件(在以往的文章中有介绍,这里就不重写了)。
2、在接收到访问数据时,首先获取访问的域名,根据域名判断需要访问的是哪个内网(域名与内网对应关系保存在数据库中)。
3、解析数据:获取本次访问方式(GET、POST或其它)、本次访问的地址栏参数(访问的模块)、本次访问的提交参数类型(JSON或XML)、本次访问的提交内容(JSON或XML的具体内容)。
4、使用IDTCPSERVER控件(或者使用其它的通讯方式都可以,个人感觉使用TCP这种方式速度能快一点,比WEB接口那种间隔1秒访问一次的方式要高级一点)。
5、为每个内网分配各自的账号与密码。
6、每次接收到访问数据时,根据域名得到需要访问的内网,然后通过IDTCPSERVER与通讯器进行交互数据,得到返回数据后,再通过IDHTTP返回给访问端。
二、通讯器的完成:
1、使用IDTCPCLIENT控件,与固定IP服务器中的IDTCPSERVER进行通讯。
2、使用分配的用户名和密码登录后,当有新访问时,使用IDHTTP访问内网,获取结果数据后返回给中间件。
3、通过中间件发送的访问方式、地址栏参数、接交参数类型、提交内容生成新的内容,向内网中的服务端软件获取数据。
特殊说明:
1、中间件的TCP需要有心跳机制。
2、通讯器中需要有判断逻辑,判断服务器是否工作正常,判断通讯器是否可以正确的接收到中间件的数据。
3、通讯器最好有自启动逻辑。
4、通讯器需要放在内网中可以上INTERNET网的电脑就可以,内网的服务端软件可以放到不可以上网的电脑,这样也算是进行了隔离。
5、有可能访问的数据需要计算很长时间,这样会导致客户端访问WEB时超时,可以设计一个简单的回调方法。客户端通过二级域名访问固定IP服务器的时候,由服务器返回一个唯一的回调标识。客户端可以通过唯一的回调标识随时来获取数据。
6、通讯器与中间件交互数据时,可以采用压缩的方式,这样还能省点固定IP服务器的流量。
这个思路已经由DELPHI完成了,并且很多客户正在使用中,稳定性还是不错的,至少比花生壳最低费用的稳定性要高一点点。
代码就不发了,思路跑通就可以,任何语言都一样。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值