史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   用Visual Basic也可以實現「端對端」 (http://forum.slime.com.tw/thread89832.html)

psac 2004-01-06 06:55 AM

用Visual Basic也可以實現「端對端」
 
Winsock控件是VB的新增功能,它解決了以往套用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 <> 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給我們提供了一種簡便的資料傳送方法,使我們得以輕鬆地實現網路點對點通信。


=========================


所有時間均為台北時間。現在的時間是 07:01 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1