国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Winsock技術(shù)在遠(yuǎn)程監(jiān)控中的應(yīng)用

2019-11-17 05:38:00
字體:
供稿:網(wǎng)友
摘要:本文根據(jù)Winsock技術(shù)及網(wǎng)絡(luò)通信原理, 利用VC++編程技術(shù),通過網(wǎng)絡(luò)數(shù)據(jù)傳輸在客戶端得到實(shí)時(shí)溫度運(yùn)行圖形,實(shí)現(xiàn)了對(duì)人工氣候室溫度運(yùn)行狀況的遠(yuǎn)程監(jiān)控, 滿足了低成本、高效率的實(shí)時(shí)自動(dòng)化要求。1 引言 隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展進(jìn)步,網(wǎng)絡(luò)對(duì)整個(gè)社會(huì)產(chǎn)生了深遠(yuǎn)的影響。由此也出現(xiàn)了以網(wǎng)絡(luò)為基礎(chǔ)的監(jiān)控治理新框架。實(shí)現(xiàn)基于網(wǎng)絡(luò)的設(shè)備遠(yuǎn)程監(jiān)控,成了目前計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用領(lǐng)域中的一個(gè)熱點(diǎn)問題。利用套接字技術(shù),通過Socket實(shí)現(xiàn)網(wǎng)絡(luò)之間的連接和數(shù)據(jù)交換,實(shí)現(xiàn)對(duì)設(shè)備的遠(yuǎn)程監(jiān)控,具有很好的應(yīng)用前景。 2 人工氣候室遠(yuǎn)程監(jiān)控系統(tǒng)的特點(diǎn)及實(shí)現(xiàn)2.1通信接口-----套接字的創(chuàng)建本文所要實(shí)現(xiàn)的是對(duì)一個(gè)小型人工氣候室的遠(yuǎn)程監(jiān)控,在異地或同一個(gè)局域網(wǎng)范圍內(nèi),可以不必親臨現(xiàn)場(chǎng)就可以觀測(cè)到人工氣候室當(dāng)前的溫度狀況和運(yùn)行中的溫度曲線,由于在遠(yuǎn)端只是需要查詢和觀察,因此只要處理好現(xiàn)場(chǎng)監(jiān)控計(jì)算機(jī)和遠(yuǎn)端客戶機(jī)之間的通信和數(shù)據(jù)傳輸就可以了。這樣不用占用現(xiàn)場(chǎng)計(jì)算機(jī)的CPU處理時(shí)間,從而能節(jié)省資源以便做更多的處理現(xiàn)場(chǎng)的工作。和遠(yuǎn)端服務(wù)器的連接可以分為以下幾個(gè)過程:(1) 服務(wù)進(jìn)程總是先于客戶進(jìn)程啟動(dòng),服務(wù)進(jìn)程首先創(chuàng)造套接字。(2) 將本地地址綁定到所創(chuàng)建的套接字上以使在網(wǎng)絡(luò)上標(biāo)識(shí)該套接字。 (3) 將套接字置于監(jiān)聽模式并預(yù)備接受連接請(qǐng)求。(4) 客戶端創(chuàng)建套接字,調(diào)用SOCKET函數(shù),方法同上。(5) 客戶向服務(wù)器提出連接請(qǐng)求。(6) 當(dāng)請(qǐng)求到來時(shí),被阻塞服務(wù)進(jìn)程的accept()函數(shù)如(3)中所述生成一個(gè)新的套接字與客戶端建立連接,并向客戶端返回接收信號(hào)。(7) 一旦客戶機(jī)的套接字收到來自服務(wù)器的接收信號(hào),則表示客戶機(jī)與服務(wù)器的連接已就緒,則可以進(jìn)行數(shù)據(jù)傳輸了。(8) 關(guān)閉套接字。一旦任務(wù)完成,就必須關(guān)掉連接已釋放套接字占用的資源。創(chuàng)建連接的服務(wù)器端和客戶端代碼簡(jiǎn)述如下:服務(wù)器端:void CServerView::OnStart ()
{ Started=TRUE;
m_Start.EnableWindow(!Started);
try
{ g_sListen.Create(6802,SOCK_DGRAM,NULL);
g_sListen.Bind(6802,m_ip);//,6802為端口號(hào),m_IP為服務(wù)器端IP地址
g_sListen.Listen();
((CServerDoc*)GetDocument())->g_pchatListen=new CChatLsnSock(
(CAnyServerDoc*)GetDocument());
CChatLsnSock* g_pchatListen=((CAnyServerDoc*)GetDocument())->g_pchatListen;
g_pchatListen->Create(9999,SOCK_STREAM);//偵聽聊天室連接套接字創(chuàng)建
g_pchatListen->Listen();
GetDlgItem(IDC_RESPONSE)->SetWindowText("開始對(duì)客戶端服務(wù)!");
}
服務(wù)端開啟后的運(yùn)行界面如圖1所示。
客戶端:
void CClientView::OnClientStart()
{m_sockRecv.Create(6801,SOCK_DGRAM,m_ClientIP);//6801為端口號(hào),m_ClientIP為客戶端IP
m_sockRecv.Bind(6801,m_ClientIP);
m_timer1=SetTimer(1,1000,NULL);
m_timer2=SetTimer(2,250,NULL);
GetLocalTime(&SysTime);
m_StartTime=SysTime;
m_WavePlay.SetStartTime(SysTime.wYear,SysTime.wMonth,SysTime.wDay,SysTime.wHour,SysTime.wMinute,SysTime.wSecond);//畫出曲線初始時(shí)間
this->m_CurrentSysTime.SetFocus();
}
Winsock技術(shù)在遠(yuǎn)程監(jiān)控中的應(yīng)用(圖一)
圖1:服務(wù)器端開啟服務(wù)運(yùn)行界面2.2網(wǎng)絡(luò)中的數(shù)據(jù)傳輸與監(jiān)控實(shí)現(xiàn)基于網(wǎng)絡(luò)的遠(yuǎn)程控制和測(cè)量應(yīng)用中,一般數(shù)據(jù)傳輸采用二進(jìn)制格式是主叢式,在人工氣候室的遠(yuǎn)程監(jiān)控系統(tǒng)中,通信雙方需要傳輸?shù)臄?shù)據(jù)流量少,下位機(jī)一般是微控制器等嵌入式系統(tǒng),數(shù)據(jù)處理能力較慢,通信雙方也不必保持緊密聯(lián)系,因此大多采用UDP協(xié)議,基于點(diǎn)對(duì)點(diǎn)的方式,雙方通信的數(shù)據(jù)可靠性可以通過定義數(shù)據(jù)表示格式來保證。另外采用把通過網(wǎng)絡(luò)傳輸過來的數(shù)據(jù)在客戶端用曲線的形式重畫顯示,用了一個(gè)本人自做的一個(gè)ActiveX控件來顯示接收的數(shù)據(jù),在數(shù)據(jù)傳輸過程中存在的滯后時(shí)間很短,可以忽略不計(jì)。
在設(shè)備運(yùn)行時(shí),服務(wù)器端的狀態(tài)一直保持開啟,測(cè)溫元件把測(cè)量到的溫度值傳入到控制微機(jī),同時(shí)通過網(wǎng)絡(luò)傳到遠(yuǎn)程客戶端,遠(yuǎn)程連接通過輸入服務(wù)器端的IP地址,輸入指定的用戶名和密碼,就可以連接上,從而就實(shí)現(xiàn)了遠(yuǎn)程監(jiān)控。建立連接后客戶端就可以接收發(fā)送過來的溫度值且用曲線形式顯示出來:void CClientView::OnDataReceive()
{
extern CListBox* pmyListBox;
char szTemPRecv[20];
CString szIP(m_IP);//得到服務(wù)器端的IP
UINT uPort=6802;//指出端口
int iTempRecv=m_sockRecv.ReceiveFrom(szRecv,10,szIP,uPort,0);
szRecv[iRecv]='/0';
m_szRecv=szTempRecv;
m_listBox.AddString((LPCTSTR)m_szRecv);
int nCount=m_listBox.GetCount();
if (nCount > 0)
m_listBox.SetCurSel(nCount-1);
GetLocalTime(&SystemTime);
m_NowTime=SystemTime;
CString strSysTime;
strSysTime.Format(_T("%d-%d-%d %d:%d:%d"),SystemTime.wYear,SystemTime.wMonth,SystemTime.wDay,SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond);
UpdateData(FALSE);
CurABSTime=(m_NowTime-m_StartTime).GetTotalSeconds();
m_WavePlay.SetPoint2(CurABSTime,atoi(m_szRecv));//用自做ActiveX控件畫出溫度曲線
完成后通過遠(yuǎn)程登錄看到的運(yùn)行界面如圖2所示。
3:結(jié)束語在實(shí)際應(yīng)用中,程序還有聊天功能、查看遠(yuǎn)程屏幕功能、文件的上傳和下載功能,從而更方便與遠(yuǎn)端進(jìn)行通信。另外在連接時(shí)采用密碼和用戶名印證方法,從而使監(jiān)控更加有力,并防止不法用戶登錄和篡改數(shù)據(jù)。本論文人工氣候室是與韶關(guān)醫(yī)療器械廠合作的用于生物培養(yǎng)的項(xiàng)目,目前已經(jīng)投入使用并在區(qū)內(nèi)通過局域網(wǎng)實(shí)現(xiàn)了對(duì)設(shè)備的監(jiān)控。
Winsock技術(shù)在遠(yuǎn)程監(jiān)控中的應(yīng)用(圖二)
圖2 當(dāng)前服務(wù)器端人工氣候室溫度運(yùn)行情況

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 昌吉市| 尼玛县| 巴中市| 甘孜| 牙克石市| 湖南省| 固镇县| 团风县| 阜新| 沧州市| 南京市| 道真| 石阡县| 德昌县| 平度市| 垣曲县| 台南县| 克什克腾旗| 泸水县| 泽州县| 扶风县| 大庆市| 达州市| 积石山| 玉龙| 洛南县| 清苑县| 玉山县| 鹤山市| 丹寨县| 台江县| 全州县| 荆门市| 涟水县| 太仆寺旗| 合江县| 布尔津县| 桃园市| 盱眙县| 富阳市| 北宁市|