5252|6

1234

帖子

4

TA的资源

纯净的硅(高级)

楼主
 

【记录-成长】架设一个简单的网络服务器 [复制链接]

本帖最后由 ywlzh 于 2016-9-29 15:04 编辑

目标:        
  将自己写的tcpserver或者httpserver能让外网访问。


方法:
  路由设置 花生壳内网穿透


具体实施:
    第一种方式: 路由设置     1.进入路由器的服务器里,一般是是192.168.1.1(网关,可随意更改) 将自己设备连接上路由的IP地址给静态分配与MAC绑定,(不做这一步也可以,只是每次开网就需要检查一下)。
   
     2.检查路由的IP是否与自己在网上搜索IP得到的结果是一样的。
  
这两个得到的结果必须一致,这就是公网的IP,这个IP地址就是其他网络设备需要访问的,不管是tcpsocket,还是http请求,都是这个IP。
  3.路由转发设置,有些路由器里这条设置在虚拟服务器里,添加一个条目,有的路由器里高级设置里有转发规则。添加一条,让外部访问(自己给别人)的端口通过路由转发到自己嵌入式设备的IP和端口上来:
   比如,我给外网上(告诉别人) IP: 121.4.147.109 端口:8080 ,转发就是将这个IP和端口转发到我自己设备的IP和端口 ,IP:192.168.31.150(自己静态设置的),端口:8086  

那么别人只需要socket连接121.4.147.109:8080 而我的设备只需要监听192.168.31.150:8086,这样,别人发来的信息就会被路由转发给我
  4.DMZ主机,这一步与第三步是不同,如果第三步成功,就可以直接测试自己的服务器,如果不成功,就试一下这一步,DMZ是将这个路由分配的IP的所有端口全部暴露出去。而且一个路由只能暴露一个IP。
  注意:一定要选择一个可以的运营商,保证他能给你路由分配的是公网IP,如果不是就有可能是二级IP,这个可以在第二步就可以看出来,不一致就代表运营商分配下来的的就是二级IP,如果这样,就算在路由设置了转发,外网访问也会被公网IP网关给拦下来,是不会让路由知道的。
更多详细的参考:
  http://www.cnblogs.com/zhuxuekui/p/4684513.html


第二种方式:花生壳内网穿透
  这种方式就不需要在在路由设置了,也不管你是几级的IP了,好像说这个是通过DNS映射上去的。
  1.下载花生壳客户端,注册一个免费的域名,下一步不是免费的,要几块钱。
   
   

  点击域名列表,进入网页界面
   

2.好像下方有个开通什么服务,选择60秒/次的心跳包,还要身份验证再化几块钱开通一个月,最后点击内网穿透
  
点击编辑设置好自己设备需要监听的IP地址与端口 比如前面的192.168.31.150:8086
3.设置好后,就可以关掉网页了,回到客户端这,点击 自诊断
  

    一切成功,别人就需要访问这个注册来的域名,信息给了花生壳那边的服务器,花生壳服务器在透过客户端转给你自己的设备,走了几道弯,少了点限制,这个需要客户端跟着运行。


测试:

     如果是用MCU设备连入网络的话,用路由器设置的方法吧,花生壳就不适用,MCU,我用的是STM32F407,用的网线连的路由,板子程序参照别人写的TCPserver移植过来的(例子网上论坛到处都是),客服端用的手机下载一个TCP连接APP(2M的大小)。
  如果用电脑测试,可以自己写一个tcpserver或者httpserver,我用的QT写的,测试无误,在网上找tcperver的例子,很多,我这就不贡献。这里发个httpserver的,源码是在别人的.
  源码在这:
  
链接已隐藏,如需查看请登录或者注册

  做了一些改动,源码上是打开就默认监听IP与端口,我添加了GUI控件。
  
  IP就是自己电脑得到的IP地址,端口是路由器设置转发来的端口或者花生壳设置的端口。打开服务器,在网页上输入公网IP加端口或者花生壳域名,至此就完成了。
  
最后的比较:

这两种方式的使用,路由器设置的方法,虽然有几点限制,但是可以支持TCP/IP协议,说到这,可能就有猜测了,的确,花生壳内网穿透的方式,我也不知道怎么回事,我发的TCP协议的包,我TCPserver没有任何反应,但是client端表示连接成功了,这个client端连接的是花生壳那边的服务器,只有这样才能转过来,可惜,http请求是转了,TCP的没有转。
  我这里放弃了用花生壳内网穿透的方式传TCP协议数据,如果非要执意用tcp,我这就提供一下思路,怎么获取花生壳域名的IP地址
  第一种: 直接点击 客户端的自诊断
  
    箭头所指便是socket要连的IP地址,端口是默认的80端口。
  第二种:不想用第一种方法的,说搞开发了,总不能自己写个程序还的点别人的程序,看了结果才知道吧,要是那边改变了怎么办?哈,有办法,那就是用DNS解析域名,获取IP地址。
  露一下程序(QT)
  
这便会将结果打印出来,至于怎么添加进自己的程序里去,就看造化了
如果只有一台联网的电脑,也是可以测试的,分享一下可以测试用的文件,已用QT打好包了,解压便可执行window7 测试可用、
webserver_qt.rar (12.78 MB, 下载次数: 13)

源码,上面就提到,只是添加了几个控件而已,做过QT的,看看也就会了。




最新回复

不错啊  详情 回复 发表于 2016-9-30 11:20
点赞 关注(3)
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友

回复
举报

1234

帖子

4

TA的资源

纯净的硅(高级)

来自 6楼
 
本帖最后由 ywlzh 于 2016-9-30 11:05 编辑

花生壳内网穿透补充:
     换一个花生壳的客户端(真是的),在自定义应用里面,把支持80端口给去掉,这样,就会随机出来一个端口号,这就支持TCP/IP数据收发了


    客户端: NewPhDDNS_2.8.0.9515.part1.rar (15 MB, 下载次数: 3) NewPhDDNS_2.8.0.9515.part2.rar (3.13 MB, 下载次数: 3)
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 

回复

493

帖子

1

TA的资源

一粒金砂(高级)

沙发
 
楼主吃饭去了,插个队,嘎嘎

点评

吃饭回来了 哈哈哈  详情 回复 发表于 2016-9-29 16:03
 
 
 

回复

6040

帖子

195

TA的资源

版主

板凳
 
强势插入。。。
 
 
 

回复

732

帖子

2

TA的资源

纯净的硅(中级)

4
 
可以的可以的,内网穿透,
 
个人签名亚里士缺德
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

5
 
Bingqi23 发表于 2016-9-29 11:37
楼主吃饭去了,插个队,嘎嘎

吃饭回来了 哈哈哈
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

96

帖子

0

TA的资源

一粒金砂(初级)

7
 
不错啊
 
个人签名极致物业管理软件,将软件做到极致
www.jeez.com.cn
联系电话:4008880135
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表