ACC2000: 使用 Winsock ActiveX 控件) 的两个示例

文章翻译 文章翻译
文章编号: 209905 - 查看本文应用于的产品
高级: 需要高级编程、 互操作性和多用户技能。

本文只适用于 Microsoft Access 数据库 (.mdb)。

展开全部 | 关闭全部

本文内容

概要

本文提供了如何使用 Winsock ActiveX 的两个示例与 Microsoft Office 2000年开发人员版工具一起安装的控件。

更多信息

Winsock 控件允许您连接到远程计算机,客户端和服务器计算机之间交换数据。Winsock控件支持两种协议: 传输控制协议 (TCP)和用户数据报协议 (UDP)。

TCP 是一种基于连接的协议。用来描述 TCP 常见类比是。调用方必须建立在这个比喻中,电话线路交换两端的连接信息。使用 TCP 的计算机必须接收确认从接收计算机的连接已建立在两台计算机可以传输数据之前。

UDP 是无连接协议。用来描述 UDP 常见的类比就是无线电设备的。在这个比喻中,无线电站肯定知道,如果正在监听,任何人都不广播其信号。计算机使用UDP 发送数据和上不需要与计算机的连接传输接收端。

示例 1-使用 TCP 使用 Winsock ActiveX 控件

此示例使用同一台计算机同时发送和接收数据。您创建三个 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-使用包含 UDP 的 Winsock ActiveX 控件

此示例使用同一台计算机同时发送和接收数据。您创建两个 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 - 最后修改: 2012年9月30日 - 修订: 4.0
这篇文章中的信息适用于:
  • Microsoft Access 2000 标准版
关键字:?
kbhowto kbinfo kbusage kbmt KB209905 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 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