|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2004-01-06, 06:55 AM | #1 |
榮譽會員
|
用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給我們提供了一種簡便的資料傳送方法,使我們得以輕鬆地實現網路點對點通信。 ========================= |
送花文章: 3,
|