使用Winsock控件時,通信的雙方需要選定相同的協議。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 <> sckClosed Then
tcpServer.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框——txtx和txty;
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 <> 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交互通信系統,用於控制、圖形仿真等。VB中Winsock給我們提供了一種簡便的數據傳送方法,使我們得以輕鬆地實現網絡點對點通信