ACC2000 : Deux exemples qui utilisent le contrôle ActiveX de Winsock

Traductions disponibles Traductions disponibles
Numéro d'article: 209905 - Voir les produits auxquels s'applique cet article
Avancé : Nécessite une matière de programmation, l'interopérabilité et compétences multi-utilisateur.

Cet article s'applique uniquement à une base de données Microsoft Access (.mdb).

Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article fournit deux exemples d'utilisation du contrôle ActiveX de Winsock installé avec les outils Microsoft Office 2000 Developer Edition.

Plus d'informations

Le contrôle de Winsock vous permet de vous connecter à un ordinateur et l'échange de données à distance entre les ordinateurs client et serveur. Le contrôle de Winsock prend en charge deux protocoles : TCP (Transmission Control Protocol) et UDP (User Datagram Protocol).

TCP est un protocole de connexion. Une analogie commune utilisée pour décrire TCP est celui d'un téléphone. Dans cette analogie, les appelants doivent établir une connexion aux deux extrémités de la ligne téléphonique avant de pouvoir échanger des informations. Un ordinateur à l'aide du protocole TCP doit recevoir la confirmation à partir de l'ordinateur de recevoir une connexion a été établie avant que les deux ordinateurs peuvent transférer des données.

UDP est un protocole sans connexion. Une analogie commune utilisée pour décrire UDP est celui d'une radio. Dans cette analogie, une station de radio, diffuse son signal sans connaître exactement si tout le monde est à l'écoute. Un ordinateur à l'aide du protocole UDP envoie des données et ne nécessite pas une connexion avec l'ordinateur sur le point récepteur de la transmission.

Exemple 1 - utilisation du contrôle ActiveX Winsock avec TCP

Cet exemple utilise le même ordinateur pour envoyer et recevoir des données. Vous créez un formulaire avec trois contrôles de Winsock. Un des contrôles émule l'environnement de l'ordinateur client pour envoyer une demande de connexion à un serveur. Les deux autres contrôles émulent l'environnement sur un ordinateur serveur : un contrôle attend une demande de connexion et l'autre accepte la demande lorsqu'il s'agit.
  1. Créer une nouvelle base de données vide nommée WinsockDemo.mdb.
  2. Créer le nouveau formulaire suivant (ne pas basé sur n'importe quelle table ou requête) en mode création :
       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. Dans le menu affichage, cliquez sur code.
  4. Tapez la ligne suivante dans la section déclaration de module de classe du formulaire :
    Dim wsListen, wsClient, wsServer As Winsock
    					
  5. Tapez les procédures suivantes.

    Pour illustrer optimale le Winsock fonctionnement du contrôle entre client et serveur, les procédures sont répertoriés dans l'ordre dans lequel ils se produisent.
    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. Enregistrez et fermez TCPForm.
  7. Ouvrez TCPForm en mode formulaire et réaliser les tâches suivantes :
    1. Cliquez sur le bouton d'écoute pour démarrer le serveur dans une demande de connexion à l'écoute.

      Notez le message qui s'affiche pour indiquer que le serveur est en attente d'une connexion.
    2. Cliquez sur le bouton Établir la connexion.

      Remarque la boîte de message à partir du client de vérifier que la connexion a réussi et la boîte de message à partir du serveur de vérifier que la demande a été acceptée.
    3. Cliquez sur le bouton Envoyer les données et notez que le message de client «Hello» s'affiche dans la zone de texte sur le formulaire.
    4. Cliquez sur le bouton répondre et notez que le message du serveur "Merci pour le message!" s'affiche dans la zone de texte.
    5. Cliquez sur le bouton Fermer la connexion et notez les messages de client et serveur indiquant que les connexions ont été fermées.

Exemple 2: utilisation du contrôle de ActiveX Winsock avec UDP

Cet exemple utilise le même ordinateur pour envoyer et recevoir des données. Vous créez un formulaire avec deux contrôles Winsock : un des contrôles émule l'ordinateur client et l'autre contrôle émule le serveur.
  1. Créer une nouvelle base de données vide nommée WinsockDemo.mdb ou utiliser la base de données que vous avez créé dans l'exemple précédent.
  2. Créer le nouveau formulaire suivant (ne pas basé sur n'importe quelle table ou requête) en mode création :
       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. Dans le menu affichage, cliquez sur code.
  4. Tapez la ligne suivante dans la section déclaration de module de classe du formulaire :
    Dim wsClient, wsServer As Winsock
    					
  5. Tapez les procédures suivantes.

    Pour illustrer optimale le Winsock fonctionnement du contrôle entre client et serveur, les procédures sont répertoriés dans l'ordre dans lequel ils se produisent.
    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. Enregistrez et fermez le formulaire UDPForm.
  7. Ouvrez UDPForm en mode formulaire et cliquez sur le bouton Envoyer les données.

    Notez que la zone de texte affiche «Hello». Étant donné qu'il s'agit d'une transmission sans connexion, vous ne devrez pas établir une connexion client-serveur.

Propriétés

Numéro d'article: 209905 - Dernière mise à jour: lundi 28 juin 2004 - Version: 2.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Access 2000 Standard Edition
Mots-clés : 
kbmt kbhowto kbinfo kbusage KB209905 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 209905
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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