如何利用长连接实现外网访问内网服务器?

需要在内网的服务器上运行一个类似HTTP代理服务的程序,这个程序与外网HTTP服务器进行长连接,等待代理请求,外网的HTTP服务器收到HTTP请求时,把对应的请求转换成内网HTTP代理软件能识别的命令返回给HTTP代理软件,此时内网的HTTP代理软件收到命令并解析,向内网服务器发送请求并接收响应内容,最后以POST方式向外网服务提交响应内容,外网服务器再向请求者返回内网WEB服务的响应,整个过程完成。我之前做的WEB远程控制的课程设计用的就是这个方法,效率还可以吧,http://nh6080.sinaapp.com

整个步骤大体与题主描述相同,并且也是PHP实现。

做内网穿透就可以,映射本地80端口下的web服务到公网上,生成公网域名地址来访问,不需要进入到路由器设置,也不需要申请公网IP。

如使用cpolar内网穿透:

在注册并安装配置好cpolar客户端后,只需一行命令就可以将本地8080端口下的web站点发布到公网上可访问

cpolar http 8080

成功获取到公网地址,就可以复制到外网浏览器访问,实现外网访问内网服务器。

欢迎进一步了解更多关于cpolar的讯息~

我错了……改答案。

外网把要访问的资源搞到一个json包裹的数组里面

内网服务器隔一秒钟访问一次,数组不为空的时候用http的multipart把资源上载到外网服务器进行缓存。

不过这样速度很慢而且资源消耗巨大。

如果只是从外网访问内网的web的话,可以用holer软件,设置一个Access key就可以从外网访问了

直接穿透就行,不管有几层路由,都能穿透