?

Winsock控件的屬性及應用方法

2016-04-26 11:41呂娜
科技視界 2016年9期
關鍵詞:屬性控件應用

呂娜

【摘 要】隨著互聯網在各個領域中的應用,計算機應用系統的開發也由傳統方式轉向網絡環境。V B提供了基于Windows Sockets網絡編程接口的Winsock控件,使得開發TCP/IP變得簡單、輕松。本文簡要介紹Winsock控件的屬性及應用方法。

【關鍵詞】Winsock;控件;屬性;應用

隨著互聯網在各個領域中的應用,計算機應用系統的開發也由傳統方式轉向網絡環境。由此Visual Basic提供了基于Windows Sockets網絡編程接口的Winsock控件,使得開發TCP/IP變得簡單、輕松。本文簡要說明Winsock控件的屬性及應用方法。

Winsock控件是一個在運行中不可見的控件,可以很容易的訪問TCP和UDP網絡服務,使用它不需要了解TCP/IP的具體細節。只要設置Winsock控件的屬性和調用該控件的方法,就可以輕松編寫網絡應用程序、連接到遠程計算機并進行雙向的數據交換。

1 Winsock控件的屬性

(1)BytesReceived(接受數據的字節數)反映接收到的數據量,它以字節為單位,是只讀屬性,在設計時不可用。

(2)LocalHostName(本地機器名),LocalIP(本地機器IP地址),LocalPort(本地機器通信程序端口),此屬性構成本地機器的網絡地址。

LocalHostName,LocalIP為只讀屬性,返回本地機器名和IP地址。

(3)RemoteHost(遠程機器名稱),RemoteHostIP(遠程機器的IP地址),RemotePort(遠程機器通信程序端口),此屬性構成遠程機器的網絡地址。

RemoteHost和RemotePort用于設置遠程主機和端口號,RemoteHost應用是一字符串,它可以是域名,也可以是IP地址。例如:要同IP地址為202.99.6.100,端口號為1024的程序通信,可設置為:

Winsockl.RemoteHost=202.99.6.100

Winsockl.RemotePort=1024

(4)SocketHandle(提供給調用Winsock API的句柄參數)用于調用低層Winsock API函數。在要求較高的情況下,可調用API來成更復雜的操作。

(5)State(連接的當前狀態)屬性為返回當前狀態,在應用中常讀取其值已得到當前狀態,從而決定下一步的處理。

2 Winsock控件的應用方法

(1)Accept方法

用于接受TCP連接請求。在TCP建立連接時,當有連接請求時,用此方法接受請求建立連接。調用格式如下:Winsock對象.Accept Request ID

(2)Bind方法

用于存在多協議接口卡的情況下,用此方法把接口卡和IP地址捆綁在一起。調用格式為:Winsock對象.Bind端口號,IP地址

(3)Close方法

用于關閉一個TCP連接。調用格式為:Winsock對象.Close

(4)Connect方法

用于向遠程主機發出連接請求。調用格式為:Winsock對象. Connect﹝遠程主機IP,遠程端口﹞

(5)Listen方法

用于服務器程序,等待客戶訪問。調用格式為:Winsock對象. Listen

(6)GetData和PeerData方法

這兩種方法都用來獲取接受數據。GetData方法取回數據后清除接收緩沖區,PeerData方法只是獲取當前接收數據拷貝,不清除緩沖區。調用格式為:Winsock對象. GetData(PeerData)變量﹝,數據類型﹝,最大長度﹞﹞

(7)SendData方法

用于發送數據,可用在TCP和UDP兩種方式下。調用格式為:

Winsock對象. SendData數據

3 Winsock控件的主要事件

(1)ConnectRequest事件

當遠程計算機請求連接時出現,僅適用于TCP服務器應用程序。當本地計算機接收到遠程計算機發送的連接請求時,控件的ConnectRequest事件將會被觸發。

(2)SendProgress事件

在發送數據期間出現。當一端的計算機正在向另一端的計算機發送數據時,SendProgress事件將被觸發。SendProgress事件記錄了當前狀態下已發送的字節數和剩余字節數。

參數:bytesSent是從上一次激活事件以來已發送的字節數:bytesRemaining是在發送緩沖區等待發送時的字節數。

(3)SendComplete事件

在完成一個發送操作時出現。當所有數據發送完成時,被觸發。

(4)DataArrival事件

當數據到達時出現。DataArrival事件連接后,接受到了新數據就會觸發這個事件。注意:如果在接受到新數據前,緩沖區中非空,就不會觸發這個事件。

(5)Error事件

發生錯誤時出現。當在工作中發生任何錯誤都會觸發這個事件。

4 Winsock控件應用實例

TCP是一種面向連接的服務,連接兩臺計算機就可彼此進行數據傳輸。UDP 是一種雙向無連接協議。跟 TCP 的操作不同,計算機并不建立連接。另外 UDP 應用程序可以是客戶機,也可以是服務器;所以程序編寫上比TCP方式簡單。我們使用UDP建立一個“聊天”程序,“聊天”是指兩個程序能夠發送數據給對方,在此兩者之間是平等的、處于同一地位,沒有服務和客戶的區別。

建立【聊天A】程序的步驟:

(1)打開VB6.0中文版,建立標準程序,設置窗體標題為“聊天A”。

(2)把Winsock控件拖到窗體中,設置Protocol屬性為I-sckUDPProtocol,其他屬性為缺省值。

(3)在窗體放置兩個標簽和文本框,設置兩個標簽的Caption屬性分別為“接收窗”和“發送窗”。

編寫代碼:

(1)在Form Load過程中設置網絡地址,設置LocalPort,RemoteHost和RemotePort屬性。

【聊天A】的RemoteHost設置為運行【聊天B】程序的主機地址。

【聊天A】的RemotePort設置要與【聊天B】的LocalPort屬性一致。

(2)在文本框的Change事件中,發送用戶輸入數據。

(3)有數據到達時,顯示對方數據內容。

到此【聊天A】程序設計完成,保存將其編譯為執行文件。因為A、B是平等的,所以【聊天B】程序設計,只需要按上述原則在Form Load中設置好網絡地址其他部分則完全與A相同。

【參考文獻】

[1]張樹兵,戴紅,陳哲.Visual Basic6.0中文版入門與提高[M].北京:清華大學出版社,1999.

[2]曾強聰.isual Basic6.0程序設計教程[M].北京:中國水利水電出版社,2003.

[責任編輯:湯靜]

猜你喜歡
屬性控件應用
對兩種實體觀的探析
ASP.NET服務器端驗證控件的使用
Spreadsheet控件在Delphi數據庫系統中的編程與應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合