史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2004-01-06, 06:55 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 用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給我們提供了一種簡便的資料傳送方法,使我們得以輕鬆地實現網路點對點通信。


=========================
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 09:24 AM


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


SEO by vBSEO 3.6.1