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 = 99End SubPrivate Sub cmdListen_Click()   ' Start the server listening for a connection request.   wsListen.Listen   Msgbox "Server is waiting for a connection request."End SubPrivate Sub cmdConnect_Click()   ' The client requests a connection with the server.   Msgbox "Client requested connection with server."   wsClient.ConnectEnd SubPrivate 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 SubPrivate 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 SubPrivate Sub cmdSend_Click()   ' After a connection is established, use a command button to send   ' data from client to server.   wsClient.SendData "Hello"End SubPrivate 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 = strClientMsgEnd SubPrivate Sub cmdRespond_Click()   ' Send a message from the server to the client.   wsServer.SendData "Thanks for the message!"End SubPrivate 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 = strServerMsgEnd SubPrivate Sub cmdClose_Click()   ' Close the server connections   wsServer.Close   wsListen.Close   Msgbox "Server connections closed."End SubPrivate 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 1007End SubPrivate Sub CmdSend_Click()   ' Send a broadcast message from the server.   wsServer.SendData "Hello"End SubPrivate 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 = strServerMsgEnd Sub					
  6. 保存并关闭窗体 UDPForm。
  7. 在窗体视图中打开 UDPForm,然后单击 发送数据 按钮。

    请注意文本框中显示"Hello"。由于这是无连接传输,您不需要建立客户端-服务器连接。
代码

警告:本文已自动翻译

属性

文章 ID:209905 - 上次审阅时间:01/11/2015 02:05:02 - 修订版本: 4.0

Microsoft Access 2000 标准版

  • kbnosurvey kbarchive kbhowto kbinfo kbusage kbmt KB209905 KbMtzh
反馈