我觉得有必要说下这个系统的构架, 它的大体设计思路, 它是如何工作的, 这样你就能了解一些事情.
首先, 物联网, 设备联网, 这些概念, 设备联网, 就是设备接入网络, 像PC一样, 插根网线上网(或者用wifi无线上网).
但是设备不是PC, 它不受人的控制, 它的行为就像PC上的的一个程序(或者说嵌入式系统上跑了一个连接网络的程序), 那么, 第一个要说明的就是: 这个设备在socket中的角色是client, 就是设备是主动连接服务器的, 我这个设计不像家庭网关, 家庭网关是一个socket server. 在我这个设计中, 设备只有两种状态: 连接上服务器,和没连接上服务器, 也就是说, 设备一上电, 就按照人设置好的, 连接服务器的ip和port.
(这也可以解释为什么要说要自己写tcp栈, 因为这个tcp栈只完成一个client的功能就够了, 代码量大大减少, )
服务器端会开放一个端口接受设备的接入, 比如: 我服务器202.194.201.182开放5000端口作为设备接入端口.
那么, 设备端要设置, 设备上电以后, 就连接202.194.201.182的5000端口, 一旦设备连上服务器, 那么一条socket连接(tcp连接)就建立了, 服务器这边会记录这个socket连接的文件描述符, 并刷新数据库, web界面是通过ajax不断更新数据库内容的, 那么, 在socket建立后, web界面会显示这个物体激活.
剩下的就是联网的设备向服务器发送数据, 等待人在web界面上点击按钮下达指令.
那么这个问题就来了, 传统的web服务器主要是web界面和数据库之间打交道, 也就是说我们看到的web界面实质内容都是放在数据库的, 在我这个设计中, 类似传统web, web界面内容也是放在数据库的, 不同的是: 有管理设备连接的程序, 不断更新这个数据库的内容, 可以这么表示:
实物---->internet----> 物联网驱动程序----->数据库----->web界面
也就是说: 运行这个程序, 对服务器的要求是: 要有开放socket端口服务的权限. 而我们知道, 一般的网站都是托管的, 也就是虚拟主机概念, 而虚拟主机一般是不给开socket端口做服务器权限的. 这正是问题所在.
我要求我老板给服务器未果, 原因也是在这里-----我公司现有的网站也是托管的, 而我老板承诺我相关项目完成后再弄独立的服务器.
这就是我现在没办法对外求独立主机的原因.
那么, 说到这, MP啊, 我知道你有闲置的虚拟主机, 但关键是: 你那个虚拟主机能不能允许我跑C程序(核心驱动是C语言的,支持百万socket连接), 不然我早放在google 的虚拟主机上了, google 的虚拟主机可原生态支持django......
我和我boss谈判, 最终, boss同意对外放出"可以提供组态化的界面来控制连接到指定的服务器的设备."
这一技术.
McuPlayer 俺想找你聊聊密谋下此事. 怎么推广.
我写了份简述, 你看看能我能说明白是啥意思不.
(tcpDebug_windows.py 需要安装python的运营环境) |