摘 要:VB的網絡編程主要是基于控件,以Winsock控件為主開發基于客戶機/服務器模式(client/server,簡稱C/S)的網絡聊天程序具有廣泛的應用價值。
關鍵詞:Winsock;網絡聊天;客戶機/服務器模式;網絡編程
網絡編程是計算機領域發展的一個流行趨勢,而VB提供了一系列的網絡編程控件,常用的VB網絡編程控件有Winsock,Inernet Transfer,webBrower。下面介紹Winsock控件的具體應用。
1 基于Winsock控件的開發模式
Winsock控件采用的是客戶機/服務器模式(Client/Server,簡稱C/S)。此模型包括客戶機和服務器應用程序。客戶應用程序向服務器應用程序提出請求服務,服務器程序偵聽到了客戶的請求后對客戶的請求作出適當的響應,即對客戶提供服務。
2 Winsocket控件詳解
2.1 主要屬性
LocalHostName:返回本機名字;LocalIP:返回本地計算機IP地址;LocalPort:返回或設置偵聽端口;Protocol:返回或設置Winsock所用的協議(TCP或UDP);RemoteHost:返回或設置遠程計算機的名稱;RemoteHost IP:返回遠程計算機的IP地址;RemotePort:連接套接字端口值;State:返回控件當前的狀態。
2.2 主要方法
⑴Listen:用于服務器程序,等待客戶訪問;⑵Connect:用于向遠程主機發出連接請求;⑶Accept:用于接受一個連接請求;⑷Senddata:用于發送數據;⑸Getdata:用來取得接收到的數據;⑹Close:關閉當前連接。
2.3 主要事件
ConnectionRequest:客戶機向服務器提出請求服務時所觸發的事件。通常與Accept方法一同使用,用來接受客戶機的連接請求。
DataArrival:當客戶端和服務器端有信息發送來時,就會觸發該事件。它通常與GetData方法一同使用,通過GetData方法獲取新到達的數據。
3 開發實例
網絡程序由客戶端和服務器兩個程序組成,可以在同一臺計算機上運行,也可以在網絡上的不同計算機上運行。整個系統的運行機制:一是建立連接,主要過程是由客戶端程序向服務器程序發出連接請求,服務端程序收到并接受請求,至此客戶機與服務器間創建了數據交流的通道。二是開始通信,主要過程是當在客戶機的“發送的信息”文本框輸入文字時,服務器端的“收到的信息”文本框就會實時地顯示相同的文字,反之亦然。
3.1 服務器程序設計
⑴程序界面設計
①創建一個“標準的EXE”工程。
②在窗體上添加Command、三個TextBox控件。名稱分別為:發送方的文本框為Ts,接收方的文本框為Tr,服務器的IP地址文本框為TsIP。
③在窗體上添加Winsock控件,名稱為winsocksv;將Protocol(協議)屬性設置為0。
⑵代碼設計
略。
在VB代碼設計窗口中編輯相應的事件過程中設計代碼,并成功編譯服務器端程序,同時制作成.exe文件。
3.2 客戶機程序設計
⑴程序界面設計
①創建一個“標準的EXE”工程,添加Winsock控件,
名稱為winsock1,將Protocol(協議)屬性設置為0。
②在窗體上添加兩個Command、四個TextBox控件。
名稱分別為:發送方的文本框為TxtS,接收方的文本框為
TxtR,Tc、Ts顯示客戶機和服務器的IP地址。
⑵代碼設計
略。
在VB代碼設計窗口中編輯相應的事件過程中設計代碼,并成功編譯客戶端程序,同時制作成.exe文件。運行服務器和客戶端的兩個.exe文件,就可實現相互之間信息發送和接收。
此實例只能實現兩個人進行網絡聊天,若服務器程序做一下改動。即可實現一個人同時與多人聊天,把服務器界面添加兩個Winsock控件,一個用來偵聽網上請求信號,另一個為初始的連接口,采用動態控件數組的形式,以后當請求連接的客戶增多時,可在這個控件的基礎上動態增加,由于篇幅問題,詳細代碼略。上述的服務程序和客戶機程序已編譯成功。
上面的網絡聊天程序,主要用到了Winsock控件。在本程序中,此控件選用TCP協議進行遠程計算機之間的通信,即便對TCP/IP、TCP這些知識掌握不夠,只要理解了網絡應用程序設計的一般原理,并對Winsock控件的主要屬性、方法和事件有所了解,就可在短時間內創建一個簡單的網絡通信程序。
文中略去的程序代碼可以聯系作者。
[參考文獻]
[1]高俊光.基于VB的Winsock控件的原理與應用[J].應用科技,2004.
[2]黃玲玲.楊剴,王穎.在VB中使用Winsock控件實現局域網通信[J].信息技術,2005.
[3]王曉平,鐘軍.VisualBasic網絡通信協議分析與應用實現[J].2003.