|
8樓

樓主 |
發(fā)表于 2010-5-11 21:59:51
|
只看該作者
我覺得有必要說下這個(gè)系統(tǒng)的構(gòu)架, 它的大體設(shè)計(jì)思路, 它是如何工作的, 這樣你就能了解一些事情.
首先, 物聯(lián)網(wǎng), 設(shè)備聯(lián)網(wǎng), 這些概念, 設(shè)備聯(lián)網(wǎng), 就是設(shè)備接入網(wǎng)絡(luò), 像PC一樣, 插根網(wǎng)線上網(wǎng)(或者用wifi無線上網(wǎng)).
但是設(shè)備不是PC, 它不受人的控制, 它的行為就像PC上的的一個(gè)程序(或者說嵌入式系統(tǒng)上跑了一個(gè)連接網(wǎng)絡(luò)的程序), 那么, 第一個(gè)要說明的就是: 這個(gè)設(shè)備在socket中的角色是client, 就是設(shè)備是主動(dòng)連接服務(wù)器的, 我這個(gè)設(shè)計(jì)不像家庭網(wǎng)關(guān), 家庭網(wǎng)關(guān)是一個(gè)socket server. 在我這個(gè)設(shè)計(jì)中, 設(shè)備只有兩種狀態(tài): 連接上服務(wù)器,和沒連接上服務(wù)器, 也就是說, 設(shè)備一上電, 就按照人設(shè)置好的, 連接服務(wù)器的ip和port.
(這也可以解釋為什么要說要自己寫tcp棧, 因?yàn)檫@個(gè)tcp棧只完成一個(gè)client的功能就夠了, 代碼量大大減少, )
服務(wù)器端會(huì)開放一個(gè)端口接受設(shè)備的接入, 比如: 我服務(wù)器202.194.201.182開放5000端口作為設(shè)備接入端口.
那么, 設(shè)備端要設(shè)置, 設(shè)備上電以后, 就連接202.194.201.182的5000端口, 一旦設(shè)備連上服務(wù)器, 那么一條socket連接(tcp連接)就建立了, 服務(wù)器這邊會(huì)記錄這個(gè)socket連接的文件描述符, 并刷新數(shù)據(jù)庫, web界面是通過ajax不斷更新數(shù)據(jù)庫內(nèi)容的, 那么, 在socket建立后, web界面會(huì)顯示這個(gè)物體激活.
剩下的就是聯(lián)網(wǎng)的設(shè)備向服務(wù)器發(fā)送數(shù)據(jù), 等待人在web界面上點(diǎn)擊按鈕下達(dá)指令.
那么這個(gè)問題就來了, 傳統(tǒng)的web服務(wù)器主要是web界面和數(shù)據(jù)庫之間打交道, 也就是說我們看到的web界面實(shí)質(zhì)內(nèi)容都是放在數(shù)據(jù)庫的, 在我這個(gè)設(shè)計(jì)中, 類似傳統(tǒng)web, web界面內(nèi)容也是放在數(shù)據(jù)庫的, 不同的是: 有管理設(shè)備連接的程序, 不斷更新這個(gè)數(shù)據(jù)庫的內(nèi)容, 可以這么表示:
實(shí)物---->internet----> 物聯(lián)網(wǎng)驅(qū)動(dòng)程序----->數(shù)據(jù)庫 ----->web界面
也就是說: 運(yùn)行這個(gè)程序, 對(duì)服務(wù)器的要求是: 要有開放socket端口服務(wù)的權(quán)限. 而我們知道, 一般的網(wǎng)站都是托管的, 也就是虛擬主機(jī)概念, 而虛擬主機(jī)一般是不給開socket端口做服務(wù)器權(quán)限的. 這正是問題所在.
我要求我老板給服務(wù)器未果, 原因也是在這里-----我公司現(xiàn)有的網(wǎng)站也是托管的, 而我老板承諾我相關(guān)項(xiàng)目完成后再弄獨(dú)立的服務(wù)器.
這就是我現(xiàn)在沒辦法對(duì)外求獨(dú)立主機(jī)的原因. |
|