Winsock - Partie 1 : Les bases


#2 - Exemples pratiques

***********************************************************
# SERVEUR - METTRE LE SERVEUR A L'ECOUTE #1
***********************************************************


Private Sub Form_Load()

Winsock1.LocalPort = 1030 'Définit 1030 comme port local
Winsock1.Listen 'Ecoute sur le port local

End Sub

Le serveur écoute sur le port 1030 et attend une connection sur ce port.


***********************************************************
# SERVEUR - ACCEPTER LES CONNECTIONS #2
***********************************************************


Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)

Winsock1.Close 'Ferme le serveur et
Winsock1.Accept requestID 'accepte la connection ayant pour ID requestID
End Sub

Dans cet exemple le serveur arrête d'écouter et établit la connection. Le serveur n'accepte donc qu'une seule connection.
Si on veut réaliser un serveur multiconnections il faut définir la propriétéIndex du contrôle à0 et utiliser ce code :

Public
numserv As Integer

Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)

numserv = numserv + 1 'incrémente le nombre de serveur
Load Winsock1(numserv) 'charge un nouveau
Winsock1(numserv).Accept requestID 'accepte la connection

End Sub

Ici le serveur charge un autre contrôle avec lequel il accepte la connection et le contrôle original reste àl'écoute d'une nouvelle connection.


***********************************************************
# CLIENT - SE CONNECTER #3
***********************************************************


Private Sub Command1_Click()

Winsock1.RemoteHost = "127.0.0.1"'l'hôte distant est l'adresse IP 127.0.0.1
Winsock1.RemotePort = 1030 'le port distant est 1030
Winsock1.Connect 'lance la connection

End Sub

Un clic sur le bouton provoque le lancement d'une connection vers RemoteHost qui peut contenir le nom d'hôte ou l'adresse IP du serveur. Notez que ce code est équivalent à: Winsock1.Connect "127.0.0.1", 1030.
( Ici c'est l'adresse de retour qui correspond àl'ordinateur qui est utilisée ce qui permet de pouvoir faire des tests sans posséder de réseau (le serveur et le client sont sur la même machine) )


***********************************************************
# CLIENT / SERVEUR - ENVOI DE DONNEES #4
***********************************************************

Private Sub Command1_Click()

If Winsock1.State = sckConnected Then 'vérifie si la connection est établie

  Winsock1.SendData Text1.Text 'envoie les données

End If

End Sub

Un clic sur le bouton provoque l'envoi du texte contenu dans Text1, si la connection est établie.


***********************************************************
# CLIENT / SERVEUR - RECEPTION DE DONNEES #5
***********************************************************

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Winsock1.GetData Temp, vbString, 10 'récupère les données et les stocke dans la variable "Temp"

End Sub

Lors de leur arrivée, les données sont récupérées avec une limitation de 10 caractères.
Ainsi si la donnée transmise est "Visual Basic", on ne récupère que "Visual Bas".

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim
Temp As String

Winsock1.GetData Temp 'récupère toutes les données

End Sub


***********************************************************
# CLIENT / SERVEUR - FERMETURE DE LA CONNECTION #6
***********************************************************

Private Sub Command3_Click()

If Winsock1.State = sckConnected Then 'si connecté

Winsock1.Close 'ferme la connection

End If

End Sub



***********************************************************
# Vous trouverez des exemples plus poussés concernant l'utilisation
# du contrôle Winsock comme la création &gestion d'un chat ou
# encore un programme de transfert de fichier dans la catégorie
# Internet &Réseaux des codes sources.
***********************************************************

 








(c) - CYBER@TOM ASSOCIATION 2000-2004