linux系统下的物联网设计

来源:互联网 发布:大货车配货软件 编辑:程序博客网 时间:2024/04/28 14:06
linux系统下的物联网系统设计
By  it_zujun
系统环境:linux2.6.29开源系统
系统工作方式:NFS挂载
测试内容:Android系统作为客户端连接服务器进
网络环境:局域网下socket公网连接
网络连接方式:linux(PC)是Ubuntu虚拟机 ,服务器为开发板,开发板通过NFS挂载到Ubuntu上
局域网测试:开发板网络ip:192.168.123.22 ,Android客户端通过路由器发出的wifi连接网络,则Android客户端的网络为192.168.123.xx,在一个局域网的环境下可以完成socket通讯,再将Android客户端网络网络切换到数据流量,socket失败。
分析原因:Android为公网,服务器为局域网,公网不能访问局域网,但局域网可以访问公网
解决方案:局域网ip地址端口映射
具体实施方案:将我们所用的网观点额摩登设置为桥接,则可以通过设置路由器的转发规则 ,设置路由器的端口号和局域网的对应的ip和端口号
如我的网关为69.123.33.xxx,服务端口为8888, 内部端口为8888,内部设备的ip地址为192.168.123.22,那么通过外网访问69.123.33.xxx:8888 则可以以访问到我们局域网内部ip地址 192.168.123.22,的8888端口(前提是你的网关摩登要设置为桥接模式)。


在这样的情况下可以用一台虚拟机作为服务器,用Android作为客户端socket通讯,成功设置成功。
开发板测试:
通过nfs挂载,开启服务器,在局域网下可以实现Android和开发板的socket通讯,用外网映射的方式不行,在这样的情况下你要ping一下你得开发板是否能够ping通www.baidu.com 
root@Industech /]# ping 192.168.123.108             
PING 192.168.123.108 (192.168.123.108): 56 data bytes 
64 bytes from 192.168.0.108: seq=0 ttl=64 time=0.597 ms
ping 220.181.111.148                                                                                        
PING 220.181.111.148 (220.181.111.148): 56 data bytes                                                                                 
ping: sendto: Network is unreachabl
e
这样的情况下你得开发板外网没设置好,如下方法: 
1.设置域名(下面的域名如果不行,可以网上搜)
echo nameserver 203.80.96.10 > /etc/resolv.conf
[root@Industech /]# ping www.baidu.com
ping: bad address 'www.baidu.com'    
[root@Industech /]# ping220.181.111.148
PING 220.181.111.148 (220.181.111.148): 56 data bytes
ping: sendto: Network is unreachable                
2.设置默认路由
/sbin/route add default  gw 192.168.123.1
设置默认路由之后,可以ping通外网ip
通过socket就可以实现物联网功能

设计架构分析:
实用性:由于需要通过访问网关的ip地址来实现,而网关的ip是租用关系,随时在变动,因而带来了很大的不便。解决方案:采用动态域名绑定,申请一个域名(it_zujun.3223.org)通过DDNS软件,动态得将本机的ip地址发给网络服务器,当我们访问t_zujun.3223.org,则通过解析到我所用的开发板的ip地址,这种应用在很多领域都在使用。这种设计思路需呀映射端口,需要购买域名,另寻更优的解决方案。
解决方案2:P2P的一个重要技术-NAT穿透
当p2p的两个种子分别位于NAT后怎么来进行这两个种子的通讯呢?一般的解决方法是NAT穿透,就是增加一个中间服务器用来进行UDP打洞,这个服务器只用来接受两个种子的通信必要信息,并分别提供给两个种子,而并不用来做为内容的中转服务器。

A---------------|---------Relay Server------------------|------------------------B

                  NAT                                                       NAT

举个例子说明,A发起一个与Relay Serer的会话,UDP连接,这样A的NAT服务器会为A分配一个端口提供给A与外界通信,Relay Server通过这个端口与NAT的地址发消息给A,同样Relay Server与B通信与之类似,如果Relay Server把端口信息与A的NAT地址提供给B,而B会把UDP封包发给这个地址与端口,而同时A发起一个与B通话的的请求,从而达到A,B通信的目的。

P2P技术这在解决方案中,实现非网关下的网络连接技术,不需要映射,达到简化操作的目的。



0 0
原创粉丝点击