使用Winsock控件時,通信的雙方需要選定相同的協(xié)議。TCP協(xié)議適用于傳送大容量、需要安全性保證的數(shù)據(jù)文件,而UDP協(xié)議適用于需要分別與很多下屬通信,或者建立的連接比較多且為時變的情況,特別是在數(shù)據(jù)量很小的時候。設定時可以使用Winsock1.PRotocol=sckTCPProtocol方法,首先要找到你的計算機的名稱,并把它添入Winsock的LocalHost屬性中。
創(chuàng)建一個應用程序時,首先要確定你建立的是客戶方應用還是服務器服務,只有建立的服務器應用開始工作,并進入監(jiān)聽狀態(tài)時,客戶應用程序才開始建立連接,進入正常的通信狀態(tài)。筆者建立了一個應用程序,它的功能是當客戶方的鼠標移動時,服務器應用程序上能夠?qū)崟r顯示該鼠標的位置。
下面是建立服務器應用的方法:
1.創(chuàng)建一個新的標準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
′發(fā)送數(shù)據(jù)
PrivateSubfrmservermonsemove(x,y)
tcpServer.SendData"x"&str(x)
tcpServer.SendData"y"&str(y)
EndSub
建立客戶應用的方法為:
1.創(chuàng)建一個新的標準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
接收數(shù)據(jù)
PrivateSubtcpClientDataArrival
(ByValbytesTotalAsLong)
DimstrDataAsString
tcpklint.GetDatastrData
ifleft(strData,1)="X"then
txtx.Text=strData
else
txty.Text=strData
endif
EndSub
以上例程實現(xiàn)的是一個非常簡單的點對點通信,在此基礎上略加改造,可以形成功能復雜的實時計算機網(wǎng)絡A-A交互通信系統(tǒng),用于控制、圖形仿真等。VB中Winsock給我們提供了一種簡便的數(shù)據(jù)傳送方法,使我們得以輕松地實現(xiàn)網(wǎng)絡點對點通信。
->新聞熱點
疑難解答