Winsock控件是VB5.0的新增功能,它解決了以往應用VB編程時網絡中應用程序之間無法實現點對點通信的難題。Winsock使用的TCP協議和UDP協議答應建立并保持一個到遠程計算機上的連接,且可以在連接結束之前實時地進行數據交換。 用戶僅通過設置屬性并借助事件處理就能夠輕而易舉地連接到一個遠程的計算機上,而且只用兩個命令就可以實現數據交換。 使用TCP協議時,假如需要創建一個客戶應用程序,就必須識別服務器的名稱或ip地址。應用程序的通信端口隨時都將仔細監測對方發出的消息,這是系統進行可靠連接的保證。一旦連接發生,任何一方都可以通過SendData發送和接收數據,并借助GetData把自己的數據分離出來。 傳送數據時,需要先設定客戶機的LocalPort屬性,服務器則只需要把RemoteHost屬性設定為客戶機以太網的地址,并設定與客戶機LocalPort屬性相同的端口地址,借助SendData方法開始發送消息??蛻魴C則在GetData事件中通過DataArrival事件分離出發送的信息?! ∫粋€Winsock控件可以讓本地計算機連接到遠程的計算機上,同時使用UDP或TCP協議,兩個協議都能創建客戶機和服務器應用?! ∈褂肳insock控件時,通信的雙方需要選定相同的協議。TCP協議適用于傳送大容量、需要安全性保證的數據文件;而UDP協議適用于需要分別與很多下屬通信,或者建立的連接比較多且為時變的情況,非凡是在數據量很小的時候。設定時可以使用Winsock1.PRotocol = sckTCPProtocol方法,首先要找到你的計算機的名稱,并把它添入Winsock的LocalHost屬性中?! 摻ㄒ粋€應用程序時,首先要確定你建立的是客戶方應用還是服務器服務,只有建立的服務器應用開始工作,并進入監聽狀態時,客戶應用程序才開始建立連接,進入正常的通信狀態。筆者建立了一個應用程序,它的功能是當客戶方的鼠標移動時,服務器應用程序上能夠實時顯示該鼠標的位置。下面是建立服務器應用的方法:1.創建一個新的標準EXE文件; 2.加入一個Winsock控件; 3.加入如下代碼: Private Sub Form_Load() tcpServer.LocalPort = 1001 tcpServer.Localhost = ″servser″ tcpServer.remotePort = 1002 tcpServer.Localhost = ″klint″ tcpServer.Listen End Sub ′連接檢查 Private Sub tcpServer_ConnectionRequest _ (ByVal requestID As Long) If tcpServer.State $#@60;$#@62; sckClosed Then _ tcp ver.Close tcpServer.Accept requestID End Sub ′發送數據 Private Sub frmserver_monsemove(x,y) tcpServer.SendData ″x″& str(x) tcpServer.SendData ″y″& str(y) End Sub 建立客戶應用的方法為: 1.創建一個新的標準EXE文件; 2.加入一個Winsock控件; 3.加入兩個TEXT框—— txt_x和 txt_y; 4.加入如下代碼: Private Sub Form_Load() tcpServer.LocalPort = 1002 tcpServer.Localhost = ″klint″ tcpServer.remotePort = 1001 tcpServer.Localhost = ″servser″ tcpServer.Listen End Sub ′連接檢查 Private Sub tcpklint_ConnectionRequest _ (ByVal requestID As Long) If tcpklint.State $#@60;$#@62; sckClosed Then _ tcpklint.Close tcpklint.Accept requestID End Sub Private Sub tcpClient_DataArrival _ (ByVal bytesTotal As Long) Dim strData As String tcpklint.GetData strData if left(strData,1)=″X″then txt_x.Text = strData else txt_y.Text = strData endif End Sub 以上例程實現的是一個非常簡單的點對點通信,在此基礎上略加改造,可以形成功能復雜的實時計算機網絡A-A交互通信系統,用于控制、圖形仿真等?! ∈褂肬DP協議建立對等通信和通過TCP建立客戶/服務器通信的方法略有不同,它不需要建立客戶和服務器,而是建立對等通信。此過程通過以下幾步實現:1.設定Winsock的RemoteHost 屬性為一個通信的計算機名稱; 2.設定 RemotePort 為一個接口號; 3.調用Winsock的Bind 事件綁定本地的接口號。具體設定方法為: Private Sub Form_Load() With Winsock1 .RemoteHost= ″PeerB″ .RemotePort = 1001 ′遠程連接號 .Bind 1002 ′綁定的本地號 End With End Sub 程序的其它部分與TCP方法類似,即通過SendData 和GetData 方法發送或提取數據。UDP和TCP協議在使用中各有特點,假如靈活使用,可以得到很好的效果。令人欣慰的是,VB5.0中Winsock給我們提供了一種簡便的數據傳送方法,使我們得以輕松地實現網絡點對點通信。