竇楠


【摘 要】在Visual Basic 6.0 環境下,利用Winsock控件實現與遠程數據采集端連接和數據傳輸。與傳統數據傳輸方法進行比較,該方法簡單且易于實現,并充分利用了網絡資源。介紹了Winsock控件,結合示例程序,說明了該方法實現流程。最后通過實驗,證實該方法進行遠程數據傳輸的可靠性。
【關鍵詞】數據傳輸;VB6.0;Winsock控件;協議
在遠程數據采集和傳輸系統中,傳統的方法有2 種:一是采用RS-485進行遠程控制;二是通過調制解調器進入電話線來實現遠程控制,然而這2 種方法都有自己的缺點。這樣一來就限制了它們的應用范圍。
本文介紹了在VB6.0中利用Winsock控件來實現服務器端與遠程客戶端建立連接并進行數據傳輸的方法。
一、基于Winsock控件的遠程數據傳輸
(一) Winsock控件簡介
Microsoft提供的Winsock控件,是ActiveX控件的一種。在VB中可以將其添加到工具箱中以便使用。在程序運行時,Winsock控件是不可見的,但通過對其屬性、方法、事件的設置及應用可輕松地實現計算機間的遠程連接,該控件為用戶提供了訪問TCP和UDP網絡及其方便的途徑,不需要了解低級Winsock API調用實現的細節。VB的Winsock控件內部幾乎封裝了所有的Internet協議,以類的形式提供了屬性、方法、事件,使得程序得到了極大的簡化。
Winsock控件的常用屬性如表1。
(二)傳輸協議
在使用Winsock控件時,首先要考慮使用什么通信協議??晒┻x擇的協議有傳輸控制協議(TCP)和用戶數據報協議(UDP),都是位于傳輸層的協議、使用端口號來識別應用程序,區別在于連接的狀態。TCP協議是一個基于連接的協議,在收發數據前必須建立連接,并且該連接可靠性強,使數據無差錯地傳輸,適合有確認信息的、重要的、數據量大(如聲音和圖像)的文件。UDP協議是不與對方建立連接而是直接就把數據報發送過去。傳輸速度較快也較便宜,適用于少量數據傳送、可靠性
要求不高的文件傳輸。本文中均選用TCP協議。
(三)遠程數據傳輸系統軟件設計
1、遠程傳輸系統軟件流程
軟件在Visual Basic環境下開發,利用Winsock控件完成客戶端與服務器端的相互通訊。
創建客戶端程序時,必須知道服務器端的IP地址(RemoteHost屬性)和服務器“偵聽”的端口(RemotePort 屬性)然后調用 Connect 方法請求與服務器連接。
創建服務器端程序時,必須設置一個收聽端口(LocalPort屬性)并調用Listen方法偵聽端口,本論文中使用的IP地址為202.205.84.222,使用的端口號為2020。當客戶端請求連接時就會發生ConnectionRequest事件。為了完成連接,可調用ConnectionRequest事件內的Accept方法與客戶端進行連接。
連接建立后,雙方就可以相互收發數據。通過調用 SendData方法完成數據發送。接收數據時會觸發DataArrival事件,調用DataArrival事件內的 GetData方法獲取數據。
2、服務器端程序設計
(1)服務器端窗體加載事件
利用Private Sub Form_Load()加載,并且設置本地
端口,打開偵聽,獲取并顯示本地狀態信息。
(2)與客戶端的連接
客戶端發出連接請求時,觸發ConnectionRequest事件,并調用Accept方法完成連接。如果本地有連接,則斷開,因為不能同時接受兩組數據
(3)建立連接
利用socks.Accept requestID接收當前連接,并顯示遠程計算機名、客戶端IP及遠程端口名稱等遠程狀態信息。
(4) 接收數據
當客戶端發送的數據到達時,觸發DataArrival事件,并調用GetData方法獲取數據
(5)確認信息
當客戶端數據發送完畢,觸發SendComplete事件,服務器端會將發送的內容回發作為接收到數據的確認信息。
1、客戶端程序設計
(1)客戶端窗體加載事件
利用Private Sub Form_Load()加載,并且指定欲建立連接的服務器IP及端口名稱,并隨時偵測連接是否成功。
(2)客戶端向服務器端發送連接請求
利用Private Sub sockcl_Connect()進行偵測,一旦成功連接,便向服務器發送客戶端數據。
(3)服務器接收客戶端發送的數據
當客戶端端發送的數據到達時,觸發DataArrival事件,并調用GetData方法獲取數據。
(4)確認信息
二、實驗結果及分析
(一)實驗環境描述
實驗中的客戶端是遠程數據采集系統,利用單片機作為主控制芯片,利用各種傳感器采集現場數據,通過A/D轉換送到單片機中。單片機通過串口與GPRS模塊連接,實現與移動網的連接,再與Internet連接。
(二)實驗結果及分析
實驗只采用8路差分模擬輸入的3路——AI 6、AI 7、AI 8,因為存在干擾,固前5路的數值還有一些誤差。顯示的數值不表示實際溫度、濕度值,需經過轉換,轉換后與實際測量值進行比較,證實該方法傳輸數據的可
靠性。程序和整個系統均有待改進。
三、結束語
Winsock是編制各種C/S程序的利器,不僅很好地解決了分散的溫度、濕度遠程數據采集系統,并能有效可靠地進行傳輸,還能開發聊天程序、搶答系統[9]等。算法具有簡單性,且易實現。
參考文獻:
[1]葉紀聽.基于VB編程實現網絡文件數據傳遞的實現[J]. 電腦知識與技術,2014,22:5235-5239.
[2]陳萍,高騰,劉兆峰,高雪為,詹鵬飛.基于GPRS的熱力管網監測軟件設計[J].山東建筑大學學報,2011,04:403-406+410.
[3]曹淑華. VB編程實現微機的網絡遠程喚醒[J].現代電子技術,2010,14:61-63.
[4]陳立定,馮景輝,胥布工.遠程環境在線監測系統的設計[J].同濟大學學報(自然科學版),2010,11:1659-1663.endprint