|
8樓
樓主 |
發表于 2010-5-11 21:59:51
|
只看該作者
我覺得有必要說下這個系統的構架, 它的大體設計思路, 它是如何工作的, 這樣你就能了解一些事情.
首先, 物聯網, 設備聯網, 這些概念, 設備聯網, 就是設備接入網絡, 像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端口做服務器權限的. 這正是問題所在.
我要求我老板給服務器未果, 原因也是在這里-----我公司現有的網站也是托管的, 而我老板承諾我相關項目完成后再弄獨立的服務器.
這就是我現在沒辦法對外求獨立主機的原因. |
|