NEO ::: TEAM
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

NEO ::: TEAM

New Evolution Owner
 
AccueilRechercherDernières imagesS'enregistrerConnexion
Le deal à ne pas rater :
Manette DualSense PS5 édition limitée 30ème Anniversaire : où ...
Voir le deal

 

 le controle winsock

Aller en bas 
AuteurMessage
pinkfloyd
Modérateur
Modérateur



Nombre de messages : 27
Age : 39
Date d'inscription : 04/12/2006

le controle winsock Empty
MessageSujet: le controle winsock   le controle winsock Icon_minitimeLun 8 Jan - 15:03

Le contrôle Winsock


Le contrôle Winsock fourni par Visual Basic 5 permet de gérer relativement simplement un flot de données à l'aide des protocoles TCP ou UDP. Ce contrôle est destiné à développer des applications Client / Serveur.
I - Mise en oeuvre d'une application Client / Serveur





Etablissement d'une connexion Client/Serveur :

- Le serveur est à l'écoute
- Le client demande l'ouverture de la connexion
- Le serveur accepte (ou non) la connexion
- Si la connexion est acceptée, elle est alors ouverte
- Les deux applications peuvent alors communiquer

Le protocole mis en œuvre par ce contrôle est soit UDP soit TCP. Les exemples donnés et les explications concernent principalement TCP, cependant les différences dans l'utilisation de ces deux protocoles sont minimes.



II - Les propriétés pour configurer le contrôle Winsock





A] Application Serveur
Pour configurer le contrôle Winsock de l'application serveur, la propriété suivante est utilisée :
- LocalPort : définit le port de communication à utiliser, ce nombre est choisi arbitrairement, en évitant les numéros de ports déjà utilisés (80, 21…)
La configuration de l'application serveur est terminée. Il faut cependant s'assurer que la machine qui va servir à exécuter cette application ait une adresse IP.

B] Application Client
Deux propriétés sont à définir pour configurer l'application client :
- RemoteHost : cette propriété doit contenir l'adresse IP de l'ordinateur sur lequel l'application serveur est exécutée
- RemotePort : le port de communication qui va être utilisé doit être défini ici, il doit être identique à celui utilisé par le serveur.

C] Propriétés communes

Une propriété doit être configurée identiquement pour les deux applications :
- Protocol : Permet de choisir le protocole (TCP ou UDP). Il faut en effet que les deux contrôles winsock communiquant ensemble "parlent" le même protocole, c'est à dire le même langage !

D] Remarques importantes

- Visual Basic nous dit que le port de communication peut être choisi automatiquement par le système en donnant comme valeur 0 pour les propriétés LocalPort et RemotePort. L'utilisation de cette possibilité reste cependant risquée et le fonctionnement aléatoire. Il est recommandé de donner un numéro de port bien défini. Il en existe suffisamment pour ne pas interférer avec le bon fonctionnement du reste du système
- Toutes les valeurs de ces propriétés peuvent être données lors de l'exécution du programme en les affectant simplement comme n'importe quelle variable, soit en utilisant la méthode BIND.



III - Les contrôles utilisés dans le fonctionnement





Le principal contrôle utilisé pour gérer le fonctionnement de Winsock est le contrôle STATE. Il permet de connaître à chaque instant l'état de la connexion (en attente, ouverte, fermée, en cours de fermeture, en cours d'ouverture…)

Exemple :
Soit un contrôle Winsock appelé WSCK. On récupèrera l'état de la connexion grâce à la ligne de code suivante :
Etat = WSCK.state
Une constante d'état sera alors affectée à la variable état.
La propriété State peut prendre les valeurs suivantes :



Constante
Valeur
Description

sckClosed
0
Fermé (valeur par défaut)

sckOpen
1
Ouvert

sckListening
2
À l'écoute

sckConnectionPending
3
Connexion en attente

sckResolvingHost
4
Hôte en cours de résolution

sckHostResolved
5
Hôte résolu

sckConnecting
6
En cours de connexion

sckConnected
7
Connecté

sckClosing
8
Connexion en cours de fermeture par l'homologue

sckError
9
Erreur



IV - Les méthodes les plus utiles





Les méthodes les plus utiles pour établir, gérer et utiliser une connexion sont :

- LISTEN : méthode utilisée dans une application serveur.
Le serveur devient alors à l'écoute d'une demande de connexion qui pourra venir ultérieurement.
- ACCEPT : par cette méthode, le serveur indique au client que sa demande de connexion est acceptée.
- CLOSE : méthode permettant au client ou au serveur de fermer la connexion.
- GETDATA : utilisée pour récupérer les données qui ont été reçues. Cette méthode peut être utilisée par le client ou par le serveur. Une méthode similaire est PeekData, le buffer de réception n'est alors pas vidé.
- SENDDATA : Cette méthode est utilisée pour envoyer des données, du client vers le serveur ou du serveur vers le client.



V - Les événements les plus utiles





Pour gérer une connexion, on doit utiliser des événements. Parmi ceux proposés, les suivants sont très utiles :
- ConnectionRequest : cet événement est déclenché sur le serveur lors d'une demande de connexion émise par le client. C'est dans le code associé à cet événement que l'on traitera l'acceptation ou le refus de la connexion.
- DataArrival : l'arrivée de données déclenche cet événement. Il faudra donc associer à celui-ci la méthode GetData ou PeekData.
- Error : Evénement déclenché par une erreur dans la connexion.
Toutes les fonctionnalités du contrôle Winsock n'ont bien sur pas été évoquées. Les informations données suffisent tout de même pour démarrer rapidement et sûrement l'exploration et l'exploitation de cet outil.



VI - Exemple de mise en oeuvre





Application SERVEUR :
Contrôle appelé WSCK_serveur
WSCK_serveur.localport = 1234
WSCK_serveur.protocol = 0

Application CLIENT :

Contrôle appelé WSCK_client
WSCK_client.remotehost = 10.10.1.2 (adresse IP du serveur)
WSCK_client.remoteport = 1234
WSCK_client.protocol = 0


Etablissement de la connexion

Le serveur doit être en mode écoute :
à WSCK_serveur.listen
On peut vérifier que WSCK_serveur = 2

Le client demande l'établissement d'une connexion :
à WSCK_client.connect
Un événement ConnectionRequest est déclenché sur le serveur, on le traite à l'aide du code suivant :

Private Sub WSCK_serveur_ConnectionRequest (requestID As Long)
' Test de la présence d'une connexion déjà ouverte
' si oui, on la ferme
If WSCK_serveur.State <> sckClosed Then WSCK_serveur.Close
' Acceptation de la connexion
WSCK_serveur.Accept requestID
End Sub
La communication est alors établie, des données peuvent être échangées.


Pour envoyer des données


Client à Serveur :
ma_donnee = "Bonjour"
WSCK_client.SendData (ma_donnee)

Serveur à Client :
ma_donnee = "Au revoir"
WSCK_serveur.SendData (ma_donnee)



Pour récupérer les données :

Le Serveur récupère des données envoyées par le client.
L'événement DataArrival est déclenché

Private Sub WSCK_serveur_DataArrival (ByVal bytesTotal As Long)

Dim strData As String
' Appel de la méthode GetData
' Une chaîne de caractères (vbString) va être placée dans la variable strData
WSCK_serveur.GetData strData, vbString

End Sub

Le client recevra des données selon la même méthode.


Revenir en haut Aller en bas
 
le controle winsock
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
NEO ::: TEAM :: Informatique :: Les RADs :: Microsoft Visuel Basic-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser