ACC2000: Ejemplos de dos que utilizan el Control ActiveX de Winsock

Seleccione idioma Seleccione idioma
Id. de artículo: 209905 - Ver los productos a los que se aplica este artículo
Avanzado: Requiere codificación experto, interoperabilidad, conocimientos y multiusuario.

Este artículo se aplica únicamente a las bases de datos de Microsoft Access (.mdb).

Expandir todo | Contraer todo

En esta página

Resumen

Este artículo proporciona dos ejemplos de cómo utilizar el control ActiveX de Winsock instalado con Microsoft Office 2000 Developer Edition Tools.

Más información

El control Winsock le permite conectar a un equipo y el intercambio de datos remoto entre equipos cliente y servidor. El control Winsock admite dos protocolos: protocolo de control de transmisión (TCP) y protocolo de datagramas de usuario (UDP).

TCP es un protocolo basado en la conexión. Una analogía comunes utilizada para describir TCP es un teléfono. En esta analogía, los llamadores deben establecer una conexión en ambos extremos de la línea telefónica antes de intercambiar información. Un equipo mediante TCP debe recibir confirmación desde el equipo receptor que una conexión se ha establecido antes de que los dos equipos pueden transferir datos.

UDP es un protocolo sin conexión. Una analogía comunes utilizada para describir UDP es una radio. En esta analogía, una emisora de radio difunde su señal sin conocer seguro por si alguien está escuchando. Un equipo mediante UDP envía datos y no requiere una conexión con el equipo en el extremo receptor de la transmisión.

Ejemplo 1: utilizar el control de ActiveX Winsock con TCP

Este ejemplo utiliza el mismo equipo para enviar y recibir datos. Crear un formulario con tres controles de Winsock. Uno de los controles emula el entorno de equipo de cliente para enviar una solicitud de conexión a un servidor. Los otros dos controles emulan el entorno en un equipo servidor: un control atiende una solicitud de conexión y el otro acepta la solicitud cuando se trata.
  1. Crear una nueva base de datos en blanco denominado WinsockDemo.mdb.
  2. Crear el siguiente formulario nuevo (no basado en ninguna tabla o consulta) en la vista Diseño:
       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. En el menú Ver , haga clic en código .
  4. Escriba la línea siguiente en la sección Declaration del módulo de clase del formulario:
    Dim wsListen, wsClient, wsServer As Winsock
    					
  5. Escriba los siguientes procedimientos.

    Para ilustrar forma óptima el Winsock funcionamiento del control entre cliente y servidor, los procedimientos se muestran en el orden en que se producen.
    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. Guarde y cierre TCPForm.
  7. Abra TCPForm en la vista formulario y realizar las siguientes tareas:
    1. Haga clic en el botón de escucha para iniciar el servidor en escucha de una solicitud de conexión.

      Observe el cuadro de mensaje que aparece para indicar que el servidor está esperando una conexión.
    2. Haga clic en el botón de Establecer conexión .

      Observe el cuadro de mensaje desde el cliente comprobar que realizó la conexión y el cuadro de mensaje desde el servidor comprobar que se aceptó la solicitud.
    3. Haga clic en el botón Enviar datos y observe que el mensaje "Hello" de cliente aparece en el cuadro de texto en el formulario.
    4. Haga clic en el botón responder y observe que el mensaje de servidor "Gracias para el mensaje!" se muestra en el cuadro de texto.
    5. Haga clic en el botón Cerrar conexión y observe los cuadros de mensaje del cliente y servidor que indica que se han cerrado las conexiones.

Ejemplo 2: utilizar el control de ActiveX Winsock con UDP

Este ejemplo utiliza el mismo equipo para enviar y recibir datos. Crear un formulario con dos controles de Winsock: uno de los controles emula el equipo cliente y el otro control emula el servidor.
  1. Crear una nueva base de datos en blanco denominada WinsockDemo.mdb o utilizar la base de datos creada en el ejemplo anterior.
  2. Crear el siguiente formulario nuevo (no basado en ninguna tabla o consulta) en la vista Diseño:
       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. En el menú Ver , haga clic en código .
  4. Escriba la línea siguiente en la sección Declaration del módulo de clase del formulario:
    Dim wsClient, wsServer As Winsock
    					
  5. Escriba los siguientes procedimientos.

    Para ilustrar forma óptima el Winsock funcionamiento del control entre cliente y servidor, los procedimientos se enumeran en el orden en que se producen.
    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. Guarde y cierre el formulario UDPForm.
  7. Abra UDPForm en la vista formulario y haga clic en el botón Enviar datos .

    Observe que el cuadro de texto muestra "Hello". Como se trata de una transmisión sin conexión, no es necesario establecer una conexión cliente-servidor.

Propiedades

Id. de artículo: 209905 - Última revisión: lunes, 28 de junio de 2004 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft Access 2000 Standard Edition
Palabras clave: 
kbmt kbhowto kbinfo kbusage KB209905 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 209905

Enviar comentarios

 

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