国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用Winsock實現點對點通信

2019-11-17 04:40:45
字體:
來源:轉載
供稿:網友
  Winsock控件是VB5.0的新增功能,它解決了以往應用VB編程時網絡中應用程序之間無法實現點對點通信的難題。Winsock使用的TCP協議和UDP協議答應建立并保持一個到遠程計算機上的連接,且可以在連接結束之前實時地進行數據交換。
用戶僅通過設置屬性并借助事件處理就能夠輕而易舉地連接到一個遠程的計算機上,而且只用兩個命令就可以實現數據交換。  使用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.加入如下代碼:
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交互通信系統,用于控制、圖形仿真等。  使用UDP協議建立對等通信和通過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給我們提供了一種簡便的數據傳送方法,使我們得以輕松地實現網絡點對點通信。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杨浦区| 霍邱县| 福海县| 舒城县| 赤城县| 龙里县| 乡宁县| 龙南县| 梅州市| 枣庄市| 梁平县| 河曲县| 柳河县| 连城县| 遂川县| 乐都县| 晋宁县| 曲麻莱县| 保康县| 英德市| 托克托县| 陵水| 蕲春县| 巍山| 观塘区| 浦江县| 炎陵县| 宜兰市| 琼中| 霍邱县| 麻阳| 鹿泉市| 中卫市| 资阳市| 曲麻莱县| 图木舒克市| 布尔津县| 饶阳县| 进贤县| 太湖县| 枝江市|