基於VB6.0的Winsock控制元件的遠端資料傳輸的方法

才智咖 人氣:2.95W

【摘 要】在Visual Basic 6.0 環境下,利用Winsock控制元件實現與遠端資料採集端連線和資料傳輸。與傳統資料傳輸方法進行比較,該方法簡單且易於實現,並充分利用了網路資源。介紹了Winsock控制元件,結合示例程式,說明了該方法實現流程。最後通過實驗,證實該方法進行遠端資料傳輸的可靠性。

基於VB6.0的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控制元件時,首先要考慮使用什麼通訊協議。可供選擇的協議有傳輸控制協議(TCP)和使用者資料報協議(UDP),都是位於傳輸層的協議、使用埠號來識別應用程式,區別在於連線的狀態。TCP協議是一個基於連線的協議,在收發資料前必須建立連線,並且該連線可靠性強,使資料無差錯地傳輸,適合有確認資訊的、重要的、資料量大(如聲音和影象)的檔案。UDP協議是不與對方建立連線而是直接就把資料報傳送過去。傳輸速度較快也較便宜,適用於少量資料傳送、可靠性要求不高的檔案傳輸。本文中均選用TCP協議。

(三)遠端資料傳輸系統軟體設計

1、遠端傳輸系統軟體流程

軟體在Visual Basic環境下開發,利用Winsock控制元件完成客戶端與伺服器端的相互通訊。

建立客戶端程式時,必須知道伺服器端的IP地址(RemoteHost屬性)和伺服器“偵聽”的埠(RemotePort 屬性)然後呼叫 Connect 方法請求與伺服器連線。

建立伺服器端程式時,必須設定一個收聽埠(LocalPort屬性)並呼叫Listen方法偵聽埠,本論文中使用的IP地址為,使用的'埠號為2020。當客戶端請求連線時就會發生ConnectionRequest事件。為了完成連線,可呼叫ConnectionRequest事件內的Accept方法與客戶端進行連線。

連線建立後,雙方就可以相互收發資料。通過呼叫 SendData方法完成資料傳送。接收資料時會觸發DataArrival事件,呼叫DataArrival事件內的 GetData方法獲取資料。

2、伺服器端程式設計

(1)伺服器端窗體載入事件

利用Private Sub Form_Load()載入,並且設定本地埠,開啟偵聽,獲取並顯示本地狀態資訊。

(2)與客戶端的連線

客戶端發出連線請求時,觸發ConnectionRequest事件,並呼叫Accept方法完成連線。如果本地有連線,則斷開,因為不能同時接受兩組資料。

(3)建立連線

利用pt 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.