-
La première section
de code sera intégrée dans l'événement FORM_LOAD.
Copiez donc le script suivant.
Private Sub Form_Load()
'Recherche des données nécessaires à la connexion au serveur
Dim V_Chaine As String
'Déclaration de la variable
V_Chaine
= ""
V_Chaine = InputBox("Entrez l'adresse IP du serveur (Ex.
200.150.100.34)",_
"Adresse IP du serveur")
'Demande de l'adresse IP du serveur
WS_1.RemotePort = 1001
'Initialisation du port
WS_1.RemoteHost = V_Chaine
'Initialisation du port hôte
WS_1.Connect
'Connexion
CA_Principal.Visible = False
'Objets rendus invisibles
BO_Connecte.Enabled = False
RZT_Reception.Visible = False
ET_Clavardeur.Visible = False
ET_Nom.Visible = False
End Sub
-
Il faut aussi
prévoir la déconnexion du serveur lorsque la feuille est
fermée. La section de code suivante placée dans
l'événement FORM_UNLOAD s'en charge.
Private Sub Form_Unload(Cancel As Integer)
'Lorsque le code Logged OUt0123 est envoyé, ne pas déconnecter
'tant que le nom de l'utilisateur n'est pas enlevé du serveur
If WS_1.State = sckConnected Then 'Si
Winsock est connecté
WS_1.SendData ZT_Nommer.Text & "Logged OUt0123"
'Déconnexion
DoEvents
End If
End Sub
-
Vous allez
poursuivre par l'addition d'un script dans la zone de
texte ZT_Nommer qui permet d'empêcher
l'utilisation des espaces dans le nom du clavardeur et
d'activer le bouton BO_Connecte.
Private Sub
ZT_Nommer_Change()
'Bloquage des espaces dans le nom du chat
If InStr(ZT_Nommer.Text, " ") Then
MsgBox "Les espaces ne sont pas permis.", vbExclamation, "Erreur de
--->
connexion" 'Avis
d'erreur
ZT_Nommer.Text = ""
'Vidage de la zone
BO_Connecte.Enabled = False
'Désactivation de BO_Connecte
Exit Sub
'Sortie de la procédure
Else
BO_Connecte.Enabled = True
'Activation de BO_Connecte
End If
End Sub
-
Le bouton BO_Connecte
est activé, mais il faut lui attribuer une tâche.
C"est le rôle du prochain script qu'on y insère.
Private Sub BO_Connecte_Click()
'La connexion envoie le code
de connexion IN0123 au serveur
If Len(ZT_Nommer.Text) > 0 Then 'On
s'assure que la zone n'est pas vide
If WS_1.State = 7 Then
'On s'assure que le serveur est en fonction
WS_1.SendData "Logged In0123" & ZT_Nommer.Text
'Envoi du nom
DoEvents
Else
MsgBox "Le serveur est temporairement hors fonction",
vbExclamation,_
"Serveur non disponible"
'Message en cas de serveur inactif
Exit Sub
'Sortie de la procédure
End If
Else
MsgBox "Entrez votre
identificateur pour commencer.", vbExclamation,_
"Erreur de connexion"
'Avis d'erreur si la zone est
vide
ZT_Nommer.SetFocus
'On donne le focus à ZT_Nommer
Exit Sub
'Sortie de la procédure
End If
End Sub
-
Passons maintenant
au script qu'on doit placer dans le bouton BO_Envoi.
Private Sub
BO_Envoi_Click()
'Envoi sur le serveur les données du
client
If WS_1.State = 7 Then
If Len(RZT_Envoi.Text) > 0 Then
'Si la zone de texte n'est pas
vide
WS_1.SendData ET_Clavardeur.Caption & ">" & " " & RZT_Envoi.Text
'Envoi-->
du nom et du
message
RZT_Envoi.Text = ""
'Vidage de la zone de texte
RZT_Envoi.SetFocus
'Retour du focus à la zone de
texte
End If
Else
MsgBox "Le serveur est temporairement fermé.", vbExclamation, "Serveur
--->
non disponible"
'Avis de serveur fermé
Exit Sub 'Sortie
de la procédure
End If
End Sub
-
Il faut en outre
ajouter une procédure de traitement des données qui sont
retournées par le serveur. La procédure ci-dessous s'en
charge.
Private Sub WS_1_DataArrival(ByVal bytesTotal As Long)
Dim V_Chaine As String 'Déclaration de variables
Dim V_a$
Dim V_i, V_j As Integer
WS_1.GetData V_Chaine, vbString 'Réception des données
'Vérifier s'il y a déjà un utilisateur de ce nom
'Dans l'affirmative, aviser la personne et mettre fin à l'application
If InStr(V_Chaine, "Existing//0123") And ET_2.Caption <> "Un" Then
MsgBox "Ce nom existe déjà. Recommencez en choisissant un nom différent",-->
vbExclamation, "Erreur de connexion" 'Message d'erreur
End 'Fin du programme
End If
'Ajout de l'utilisateur à une liste
If InStr(V_Chaine, "Logged") Then 'Si la connexion est effectuée
ZL_Utilisateurs.Clear 'Liste vidée
ET_2.Caption = "Un" 'Garde l'indication que l'utilisateur est connecté
CA_principal.Visible = True
'Affichage du cadre principal
CA_connection.Visible = False
'Fermeture du cadre de connexion
RZT_reception.Visible = True
ET_clavardeur.Visible = True
ET_nom.Visible = True
ET_clavardeur.Caption = ZT_nommer.Text
'Affichage du nom du clavardeur
V_i = InStr(V_Chaine, "*") - 1
V_Chaine = Left$(V_Chaine, V_i)
Do Until Len(V_Chaine) <= 1
'Ajoute des utilisateurs à la liste
V_i = InStr(V_Chaine, "@") - 1
V_a$ = Left$(V_Chaine, V_i)
V_Chaine = Replace(V_Chaine, Left$(V_Chaine, V_i + 1), "")
ZL_Utilisateurs.AddItem V_a$
Loop
'Addition des messages au chat
Else
RZT_reception.Text = RZT_reception.Text & V_Chaine & vbNewLine
End If
End Sub
-
Le travail est
presque terminé. Il ne reste plus que les scripts pour
les boutons BO_Réinitial et BO_Déconnecte.
Ils sont courts. Les voici.
Private Sub BO_Réinitial_Click()
RZT_Reception.Text = ""
'Vidage de la zone de texte de réception
End Sub
Private Sub BO_Déconnecte_Click()
Unload Me 'Déchargement
de la feuille
End Sub
-
Téléchargez les deux ressources
suivantes dans le même répertoire que le serveur: RICHTX32.ocx
et MSWINSOCK.ocx.
Ils pourraient être nécessaires au bon fonctionnement de
votre application.
-
Enregistrez votre
projet sous le nom donné au début. Créez-en une version
.exe. Pour l'essayer, il vous faudra la
collaboration d'un ou deux amis. Commencez par charger le
serveur sur votre appareil (la version .exe).
Donnez l'adresse IP à vos deux camarades et
demandez leur de charger le programme client en format .exe
et de l'exécuter. Chargez-le aussi vous-même. Clavardez
ensuite pendant quelques minutes pour voir si tout
fonctionne bien.
Application:
- Personnalisez l'aspect
visuel du serveur en ajoutant un arrière-plan et des
couleurs à votre goût. Enregistrez votre
nouvelle version sous le nom Ex_25bxx.vbp.
Relevez ensuite une amélioration qui pourrait
être apportée au logiciel de clavardage et apportez-la.
|