ACC2000: 使用 Winsock ActiveX 控制項的兩個範例

文章翻譯 文章翻譯
文章編號: 209905 - 檢視此文章適用的產品。
進階: 須具備專家編碼、 互通性,與多使用者技能。

本文只適用於 Microsoft Access 資料庫 (.mdb)。

全部展開 | 全部摺疊

在此頁中

結論

本文提供如何使用 Microsoft Office 2000 開發 o 人 h 員 ? 工 u 具 ? 版] 以安裝 Winsock ActiveX 控制項的兩個範例。

其他相關資訊

Winsock 控制項可讓您連線到遠端的電腦和交換資料用戶端和伺服器電腦之間。Winsock 控制項支援兩種通訊協定: 傳輸控制通訊協定 (TCP) 與使用者資料包通訊協定 (UDP)。

TCP 是連線為基礎的通訊協定。常見的類比用來描述 TCP 是電話。在這個比喻呼叫端必須建立在兩端電話線路連接之前可以交換資訊。使用 TCP 的電腦必須從某個連接已接收的電腦接收確認建立前兩部電腦可以傳輸資料。

UDP 是不需連線的通訊協定。常見的類比用來描述 UDP 是一個電台。在這個比喻廣播電台廣播其訊號不確定知道如果有人正在接聽的情況下。使用 UDP 電腦傳送資料,且不需要與傳輸的接收端電腦的連線。

範例 1-使用 Winsock ActiveX 控制項具有 TCP

這個範例會使用同一台電腦同時傳送和接收資料。您可以建立一個表單具有三個 Winsock 控制項。其中一個控制項可模擬用戶端電腦環境,以將連線要求傳送到伺服器。其他兩個控制項模擬環境在伺服器電腦上的: 一控制項接聽的連接要求,而且另時接受要求。
  1. 建立一個新的空白資料庫,名為 WinsockDemo.mdb。
  2. 在設計檢視中建立下列的新表單 (不根據任何資料表或查詢):
       Form: TCPForm
       ---------------------------------
       Caption: TCP Form
    
       Command button:
          Name: cmdListen
          Caption: Listen
       Command button:
          Name: cmdConnect
          Caption: Establish Connection
       Command button:
          Name: cmdSend
          Caption: Send Data
       Command button:
          Name: cmdRespond
          Caption: Respond
       Command button:
          Name: cmdClose
          Caption: Close Connection
       Text box:
          Name: Text1
          Label Caption: Data Received:
       Winsock control:
          Name: axWinsockListen
       Winsock control:
          Name: axWinsockClient
       Winsock control:
          Name: axWinsockServer
    					
  3. 按一下 [檢視] 功能表 程式碼
  4. 表單的類別模組的宣告區段中,請輸入下面這一行:
    Dim wsListen, wsClient, wsServer As Winsock
    					
  5. 鍵入下列程序。

    若要最佳狀態說明 Winsock 控制用戶端和伺服器之間的運作方式,它們發生的順序列出程序
    Private Sub Form_Load()
       ' Set one server Winsock control and the client Winsock control
       ' when the form loads.
       Set wsListen = Me!axWinsockListen.Object
       Set wsClient = Me!axWinsockClient.Object
    
       ' Set the protocol for each control.
       wsListen.Protocol = sckTCPProtocol
       wsClient.Protocol = sckTCPProtocol
    
       ' Set the remote host on the client Winsock control. Because
       ' client and server are the same computer in this example, set
       ' RemoteHost equal to LocalIP.
       wsClient.RemoteHost = wsListen.LocalIP
    
       ' Set a local and a remote port for the client.
       wsClient.RemotePort = 100
       wsClient.LocalPort = 99
    
       ' Set a local and a remote port for the server. Note that the
       ' server RemotePort is the client LocalPort and vice versa.
       wsListen.LocalPort = 100
       wsListen.RemotePort = 99
    End Sub
    
    Private Sub cmdListen_Click()
       ' Start the server listening for a connection request.
       wsListen.Listen
       Msgbox "Server is waiting for a connection request."
    End Sub
    
    Private Sub cmdConnect_Click()
       ' The client requests a connection with the server.
       Msgbox "Client requested connection with server."
       wsClient.Connect
    End Sub
    
    Private Sub axWinsockListen_ConnectionRequest(ByVal requestID As _
       Long)
       ' When the server receives a connection request, set the second
       ' Winsock on the server to accept the request.
       Set wsServer = Me!axWinsockServer.Object
       wsServer.Protocol = sckTCPProtocol
    
       ' Accept the connection request.
       wsServer.Accept requestID
       Msgbox "Server accepted client connection request."
    End Sub
    
    Private Sub axWinsockClient_Connect()
       ' When the server accepts the connection request, the Connect
       ' event fires on the client. Display a message indicating success.
       MsgBox "Connection Successful!"
    End Sub
    
    Private Sub cmdSend_Click()
       ' After a connection is established, use a command button to send
       ' data from client to server.
       wsClient.SendData "Hello"
    End Sub
    
    Private Sub axWinsockServer_DataArrival(ByVal bytesTotal As Long)
       Dim strClientMsg As String
    
       ' The DataArrival event fires on the server when the client sends
       ' information. Get the data and display it in a text box.
       wsServer.GetData strClientMsg, vbString
       Me!Text1.Value = strClientMsg
    End Sub
    
    Private Sub cmdRespond_Click()
       ' Send a message from the server to the client.
       wsServer.SendData "Thanks for the message!"
    End Sub
    
    Private Sub axWinsockClient_DataArrival(ByVal bytesTotal As Long)
       Dim strServerMsg As String
    
       ' The DataArrival event fires on the client when the server sends
       ' information. Get the data and display it in a text box.
       wsClient.GetData strServerMsg
       Me!Text1.Value = strServerMsg
    End Sub
    
    Private Sub cmdClose_Click()
       ' Close the server connections
       wsServer.Close
       wsListen.Close
       Msgbox "Server connections closed."
    End Sub
    
    Private Sub axWinsockClient_Close()
       ' Close event on client fires after server closes connection.
       ' Close the client connection and display a message box.
       wsClient.Close
       MsgBox "Client connections closed. Good-Bye!"
    End Sub
    					
  6. 儲存並關閉 TCPForm。
  7. 在 [表單] 檢視中開啟 TCPForm 並執行下列工作:
    1. 按一下 聆聽] 按鈕,以接聽連線要求啟動伺服器。

      請注意訊息方塊,會出現指出伺服器正在等候連接。
    2. 按一下 [建立連接] 按鈕。

      請注意訊息方塊,從用戶端驗證連接已成功和訊息方塊,從伺服器確認要求已經被接受。
    3. 按一下 [傳送的資料] 按鈕並注意用戶端訊息"Hello"出現在表單上的文字方塊中。
    4. 按一下 [回覆] 按鈕並注意伺服器訊息 」 訊息的感謝!"顯示在文字方塊中。
    5. 按一下 [關閉] 的連線] 按鈕並注意訊息方塊,從用戶端和伺服器指出連線都已關閉。

範例 2-使用 Winsock ActiveX 控制項具有 UDP

這個範例會使用同一台電腦同時傳送和接收資料。您建立具有兩個 Winsock 控制項的表單: 一種控制項可模擬用戶端電腦和其他控制項可模擬伺服器。
  1. 建立一個新的空白資料庫,名為 WinsockDemo.mdb,或使用您在先前範例中所建立的資料庫。
  2. 在設計檢視中建立下列的新表單 (不根據任何資料表或查詢):
       Form: UDPForm
       --------------------------------
       Caption: UDP Form
    
       Command button:
         Name: cmdSend
            Caption: Send Data
         Text box:
            Name: Text1
            Label Caption: Data Received:
         Winsock control:
            Name: axWinsockClient
         Winsock control:
            Name: axWinsockServer
    					
  3. 按一下 [檢視] 功能表 程式碼
  4. 表單的類別模組的宣告區段中,請輸入下面這一行:
    Dim wsClient, wsServer As Winsock
    					
  5. 鍵入下列程序。

    若要最佳狀態說明 Winsock 控制用戶端和伺服器之間的運作方式,程序是在發生順序列出。
    Private Sub Form_Load()
       ' Set the control objects when the form loads.
       Set wsClient = Me!axWinsockClient.Object
       Set wsServer = Me!axWinsockServer.Object
    
       ' Set the protocol for client and server.
       wsClient.Protocol = sckUDPProtocol
       wsServer.Protocol = sckUDPProtocol
    
       ' Set the host and ports for client and server. Because client
       ' and server are the same computer in this example, set RemoteHost
       ' equal to LocalIP.
       wsServer.RemoteHost = wsClient.LocalIP
       wsServer.RemotePort = 1007
       wsClient.Bind 1007
    End Sub
    
    Private Sub CmdSend_Click()
       ' Send a broadcast message from the server.
       wsServer.SendData "Hello"
    End Sub
    
    Private Sub axWinsockClient_DataArrival(ByVal bytesTotal As Long)
       Dim strServerMsg As String
    
       ' When a message arrives from the server, display it in a text
       ' box.
       wsClient.GetData strServerMsg, vbString
       Me!Text1.Value = strServerMsg
    End Sub
    					
  6. 儲存並關閉表單 UDPForm。
  7. 在表單檢視中開啟 UDPForm,然後按一下 [傳送的資料] 按鈕。

    請注意 [文字] 方塊中會顯示"Hello]。因為這是無連線傳輸時,您沒有建立用戶端與伺服器連線。

屬性

文章編號: 209905 - 上次校閱: 2004年6月28日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft Access 2000 Standard Edition
關鍵字:?
kbmt kbhowto kbinfo kbusage KB209905 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:209905
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com