摘要:本(běn)文闡(chǎn)述了在蝌蚪视频在线观看視邁(OZEAM)全數字可視對講係統中進行internet校時(shí)的必要性和實現途徑
關鍵詞:internet校時全數字可視對(duì)講係統蝌蚪视频在线观看視邁OZEAMRFC-868
Abstract:Thispaperexplainedthenecessityandtheimplementationtosynchronizethesystemclockoftheoutdoorunitandtheindooruintinthedigitalvideointercomsystem(brand:OZEAM)usinganNTP(networktimeprotocol)server.
Keywords:timesynchronizing,NTP(networktimeprotocol),digitalvideointercomsystem,OZEAM.
1.全(quán)數字可視對講係統校時的現狀
目前全數字可視對講係統主要通過以下方法進行校時:
(1)在安裝有管理中心的(de)情況下,管理中(zhōng)心充當時間服務器,門(mén)口機和室內機與管理中心(xīn)通訊,獲取當前時間來(lái)設置本機時間。
(2)在沒有安裝管理(lǐ)中心的情況下,隻能(néng)在門口機和室內(nèi)機上手動設置本機時間。但一旦斷電,又恢複(fù)到初始時間。這給用戶帶來不便,特別是單家獨戶的別(bié)墅用戶,一般是不可能安裝管理中心的。
沒有安裝管理中心但全數字可視對講門口機和室內機已連(lián)接互聯(lián)網,能不能通過互聯網進行自動校時?答案是肯定的。
2.RFC-868時間協議
本RFC規範了一個ARPAInternetcommunity上的標準。在ARPAInternet上(shàng)的所有主機(jī)應當采用和實現這個標準。
此協議提供了一個獨立於站點的,機器可讀的日期和時間信息。時間服務返回的是(shì)以秒數,是從1900年1月1日午夜到現在的秒數。
設計這個協議(yì)的一個重要目的在於,網絡上的許多主機(jī)並沒(méi)有時間的觀念,在分布式的(de)係統上(shàng),我們可以想一(yī)想,北京的時間和東京的時間如何分呢(ne)?主機的時間往往可以人為改變,而且因為機器時鍾內的誤差(chà)而變得不一致,因(yīn)此需要使用時間服務器通過選舉(jǔ)方式得到(dào)網(wǎng)絡時間,讓服務器有一個準確的時間(jiān)觀念(niàn)。不要小(xiǎo)看時間,這對於一(yī)些以時(shí)間為標準的分布運行的程序簡單是太重要了。
這個協議可以工作在TCP和UDP協議下。下麵是通過TCP協議工作的時間協議的工作過程:這裏S代表服(fú)務器,C代表客戶。
S:檢測端口(kǒu)37
U:連接到端口37
S:以32位二進製數發送時間
U:接收時間
U:關閉連接
S:關(guān)閉連接
服務器在端口37上監聽連接。當連接建立後,服務器返回一個32位的時間值,然後關閉連接。這個過程也不難,如果服務器不能決定現在是什麽時間,服務器會拒(jù)絕連接或不發送任何(hé)數據而直接關閉連接。
下麵我們看看使用(yòng)UDP協議的情況(kuàng):這裏S代表服務器,C代表客戶。
S:檢測(cè)端口37
U:發送一個空數據報到端口37
S:接收這個空數據報
S:發送包含32位二進製數(用於表示時間)的數據報
U:接收時間數據報
服務器在端口37上監(jiān)聽數據包。當一個數據包來後,服務器返(fǎn)回一個包含32位的(de)時(shí)間的數據包。這個過程也(yě)不難,如果服務器(qì)不(bú)能決定現在是什麽時間,服務器會拋棄接收到的數據報而(ér)不作出(chū)任何應答。
*時間
時間是由32位表(biǎo)示的,是自1900年1月1日0時到當前的秒數,我們可(kě)以計算一下,這個(gè)協議隻能表示到2036年就不能用了。(但是我(wǒ)們也知道計算機發展(zhǎn)速度這麽快,可能到時候就會有更好的協議代替這個協議,或者有已經想出有效的解決辦法了。)
下麵是些例子:
thetime2,208,988,800correspondsto00:001Jan1970GMT,
2,398,291,200correspondsto00:001Jan1976GMT,
2,524,521,600correspondsto00:001Jan1980GMT,
2,629,584,000correspondsto00:001May1983GMT,
以及-1,297,728,000correspondsto00:0017Nov1858GMT.
3.Internet校時的程序實現
下麵是使用TCP協議的實現Internet校時的部分代碼。
voidtime_internet_to_local(void*recv_buf)//接到的數(shù)據轉換為本地時間
{
assert(recv_buf);
charp[4],*precv=((char*)recv_buf)+3;
for(inti=0;i<4;i++)< p="">
p[i]=*precv--;
*(long*)p-=2208988800;
SYSTEMTIMEst;
tm*ptm=gmtime((time_t*)p);
st.wYear=ptm->tm_year+1900;
st.wMonth=ptm->tm_mon+1;
st.wDay=ptm->tm_mday;
st.wHour=ptm->tm_hour;
st.wMinute=ptm->tm_min;
st.wSecond=ptm->tm_sec;
st.wMilliseconds=0;
SetSystemTime(&st);
}
BOOLGetTimeFromServer(DWORD*lpdwTime)//TCP方式
{
*lpdwTime=0;
BOOLbReturn=FALSE;
SOCKETsSock=socket(AF_INET,SOCK_STREAM,0);
if(INVALID_SOCKET!=sSock)
{
structsockaddr_insin;
memcpy(&sin.sin_addr,&NISTSVRSARY[choice].addr,sizeof(in_addr));
sin.sin_family=AF_INET;
sin.sin_port=htons(IPPORT_TIMESERVER);
wprintf(L"\n...waitingtolink...\n");
if(0!=connect(sSock,(structsockaddr*)&sin,sizeof(structsockaddr_in)))
{
wprintf(L"Linked.Receivingdata...\n");
intiResult;
iResult=recv(sSock,(char*)lpdwTime,4,0);
if(iResult==4)
{
*lpdwTime=ntohl(*lpdwTime);
bReturn=TRUE;
}
else
{
wprintf(L"Failtogettime!iResult=%d\n",iResult);
}
}else
wprintf(L"Failtolink,overtime!\n");
closesocket(sSock);
}
returnbReturn;
}
4.結束語(yǔ)
程序在EVC4.0編寫(xiě)調試正確,並在WinCE5.0下運行正確。隻要門口機或室內(nèi)機連接Internet,則自動進行校時,無需手動設置,也無(wú)需安裝(zhuāng)管理中心。
Internet自動校時為蝌蚪视频在线观看視邁(OZEAM)全數(shù)字(zì)可視對(duì)講係統增色不少。
全數字可視對講係統(tǒng)
類(lèi)數字可視對講係(xì)統
電梯控製係統
雙向可(kě)視對講求助係統
智能家居係統
聲波(bō)雲門禁係統
4000-020-230