使用TCP協定時,如果需要建立一個客戶應用程式,就必須識別伺服器的名稱或ip位址。應用程式的通訊埠隨時都將仔細監控對方發出的訊息,這是系統進行可靠連線的保證。一旦連接發生,任何一方都可以透過SendData發送和接收資料,並藉助GetData把自己的資料分離出來。傳送資料時,需要先設定客戶機的LocalPort屬性,伺服器則只需要把RemoteHost屬性設定為客戶機乙太網路的位址,並設定與客戶機LocalPort屬性相同的連接埠位址,借助SendData方法開始傳送訊息。客戶機則在GetData事件中透過DataArrival事件分離出發送的訊息。一個Winsock控制可以讓本地電腦連接到遠端的電腦上,同時使用UDP或TCP協定,兩個協定都能創建客戶機和伺服器應用。
使用Winsock控件時,通訊的雙方需要選定相同的協定。 TCP協定適用於傳送大容量、需要安全性保證的資料文件,而UDP協定適用於需要分別與很多下屬通訊,或建立的連線比較多且為時變的情況,特別是在資料量很小的時候。設定時可以使用Winsock1.PRotocol=sckTCPProtocol方法,首先要找到你的電腦的名稱,並把它添入Winsock的LocalHost屬性中。
創建一個應用程式時,首先要確定你建立的是客戶方應用還是伺服器服務,只有建立的伺服器應用程式開始工作,並進入監聽狀態時,客戶應用程式才開始建立連線,進入正常的通訊狀態。筆者建立了一個應用程式,它的功能是當客戶方的滑鼠移動時,伺服器應用程式上能夠即時顯示該滑鼠的位置。
下面是建立伺服器應用程式的方法:
1.建立一個新的標準EXE檔;
2.加入一個Winsock控件;
3.加入以下程式碼:
PrivateSubFormLoad()
tcpServer.LocalPort=1001
tcpServer.Localhost=servser
tcpServer.remotePort=1002
tcpServer.Localhost=klint
tcpServer.Listen
EndSub
′連接檢查
PrivateSubtcpServerConnectionRequest(ByValrequestIDAsLong)
IftcpServer.State<>sckClosedThen
tcpServer.Close
tcpServer.AcceptrequestID
EndSub
′發送數據
PrivateSubfrmservermonsemove(x,y)
tcpServer.SendDatax&str(x)
tcpServer.SendDatay&str(y)
EndSub
建立客戶應用的方法為:
1.建立一個新的標準EXE檔;
2.加入一個Winsock控件;
3.加入兩個Text框-txtx和txty;
4.加入以下程式碼:
PrivateSubFormLoad()
tcpServer.LocalPort=1002
tcpServer.Localhost=klint
tcpServer.remotePort=1001
tcpServer.Localhost=servser
tcpServer.Listen
EndSub
′連接檢查
PrivateSubtcpklintConnectionRequest
(ByValrequestIDAsLong)
Iftcpklint.State<>sckClosedThen
tcpklint.Close
tcpklint.AcceptrequestID
EndSub
接收資料
PrivateSubtcpClientDataArrival
(ByValbytesTotalAsLong)
DimstrDataAsString
tcpklint.GetDatastrData
ifleft(strData,1)=Xthen
txtx.Text=strData
else
txty.Text=strData
endif
EndSub
以上例程實現的是一個非常簡單的點對點通信,在此基礎上略加改造,可以形成功能複雜的實時計算機網絡AA交互通信系統,用於控制、圖形仿真等。 VB中Winsock為我們提供了一種簡便的資料傳送方法,使我們得以輕鬆地實現網路點對點通訊。
->