Graphiques
 
- Dégradé
- Animations BitBlt
- Animations Pic
- Contrôle Animation
- Défilement d'image
 
Interface
 
- Barre d'outils
- Barre de progression
- Clignotement
- Interface MDI
- Barre d'état
 
Texte & système
 
- Texte sur image
- Taille variable
- Informations système
 
Fichiers
 
- Grand fichier
- Choix de police
- Dictionnaire Word
- Listes
- Fichiers binaires
 
Souris et touches
 
- Curseur animé
- Touches
 

Création d'un serveur pour clavardage

Il vous est sûrement déjà arrivé d'aller clavarder sur Internet. Le prochain exercice vous montrera comment créer votre propre serveur de clavardage que vous pourrez utiliser pour discuter avec vos amis. Notez qu'il s'agit de l'adaptation d'un programme créé par M. Indrasena Reddy et gracieusement offert sur Internet.

  1. Commencez par créer un nouveau projet que vous enregistrez sous le nom de Ex_24xx.vbp

  2. Allez au menu Projet, option Composants et activez Microsoft Winsock Control 6.0.

  3. Créez ensuite l'interface ci-dessous. Les caractéristiques à respecter sont indiquée à la suite de l'image.

 

Feuille

NAME: F_Serveur
CAPTION: Serveur du clavardeur
HEIGHT: 4500
WIDTH: 6000

Cadre (1)

NAME: CA_Adresse
CAPTION: Adresse IP du serveur

Étiquette (2)

NAME: ET_AdrIP
BORDERSTYLE: 0-None
CAPTION: vide

Étiquette (3)

NAME: ET_Clients
CAPTION: Liste des clients

Zone de liste ou ListBox (4)

NAME: ZL_Clients

Contrôle Winsock

NAME: WS_1
INDEX: 0 (permet de créer un groupe de contrôles Winsock.

  1. Voici venu le temps de commencer la programmation de cette application. Vous allez d'abord déclarer un variable dans la section Général de la feuille. Celle-ci servira à déterminer le numéro du contrôle Winsock à utiliser.

Private V_Global As Long 'Variable servant à emmagasiner le numéro des connexions

  1. L' opération suivante consiste à effectuer le réglage de la connection et l'identification de l'adresse IP du serveur dont auront besoin les applications clients pour se brancher. Insérez donc le code suivant dans l'événement FORM_LOAD.

Private Sub Form_Load()
   V_Global = 0  
'Initialisation de la variable
   WS_1(0).LocalPort = 1001 
'Détermination du port pour la première occurrence-->
    du contrôle Winsock

   WS_1(0).Listen  
'Contrôle Winsock placé en écoute
   ET_AdrIP.Caption = WS_1(0).LocalIP  
'Identification de l'adresse IP du serveur-->
   et inscription dans l'étiquette réservé pour son affichage

End Sub

  1. Les deux procédures suivantes sont incluses dans l'objet Winsock. La première gère les demandes de connexion.

Private Sub WS_1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
   'Acceptation des requêtes des clients
   If Index = 0 Then
      V_Global = V_Global + 1  
'Incrémentation du compteur de connexions
      Load WS_1(V_Global)   
'Création d'un nouvel objet Winsock
      WS_1(V_Global).LocalPort = 1001  
'Détermination du port pour l'objet
      WS_1(V_Global).Accept requestID  
'Acceptation de la demande
   End If
End Sub

  1. La seconde gère l'arrivée des données. Vous remarquerez l'utilisation d'une nouvelle instruction pour les chaînes: SPLIT. Celle-ci permet d'extraire certaines parties de chaînes.

Private Sub WS_1_DataArrival(Index As Integer, ByVal bytesTotal As Long)

   'Déclaration des variables
   Dim V_i, V_j, V_num As Integer
   Dim V_Chaine, V_utilisa As String
   Dim V_a$()   
'Variable redimensionnable
   Dim V_u As Integer

  
'Lecture des données
   WS_1(Index).GetData V_Chaine, vbString, bytesTotal
   V_u = 0
   If InStr(V_Chaine, "Logged") > 0 Then
  
'Recherche du code IN0123 généré quand le client se branche
   If InStr(V_Chaine, "Logged In0123") > 0 Then
      V_a$() = Split(V_Chaine, "Logged In0123")
      ZL_clients.AddItem V_a$(1)
'Ajout du nom à la liste
      For V_num = 0 To ZL_clients.ListCount - 1
'Vérification de la présence du nom
         If ZL_clients.List(V_num) = V_a$(1) Then
            V_u = V_u + 1
         End If
         If V_u > 1 Then
            ZL_clients.RemoveItem (V_num)
'Suppression du nom si doublet
            For V_i = 0 To V_Global
               If WS_1(V_i).State = 7 Then
                  WS_1(V_i).SendData "Existing//0123" & V_Chaine
'Avertissement de-->
                  connexion refusée

                  DoEvents
              End If
           Next V_i
       End If
      Next V_num
      V_utilisa = ""
      For V_j = 0 To ZL_clients.ListCount - 1
         V_utilisa = V_utilisa & ZL_clients.List(V_j) & "@"
      Next V_j
      V_utilisa = V_utilisa & "*Logged In0123"
      For V_i = 0 To V_Global
         If WS_1(V_i).State = 7 Then
            WS_1(V_i).SendData V_utilisa
'Avis de connexion réussie
         End If
      Next V_i
   End If

  
'Actions réalisées lors du débranchement du client (code OUt0123)
   If InStr(V_Chaine, "Logged OUt0123") Then
      V_a$() = Split(V_Chaine, "Logged OUt0123")
      For V_num = 0 To ZL_clients.ListCount - 1
         If ZL_clients.List(V_num) = V_a$(0) Then
            ZL_clients.RemoveItem (V_num)
'Extraction du nom de la liste
         End If
      Next V_num
      V_utilisa = ""
      For V_j = 0 To ZL_clients.ListCount - 1
         V_utilisa = V_utilisa & ZL_clients.List(V_j) & "@"
      Next V_j
      V_utilisa = V_utilisa & "*Logged Out0123"
      For V_i = 0 To V_Global
         If WS_1(V_i).State = 7 Then
            WS_1(V_i).SendData V_utilisa
'Avis de connexion réussie
         End If
      Next V_i
   End If
   Else
     
'Envoi des données autres que les LOGIN et LOGOUT
      For V_i = 0 To V_Global
         If WS_1(V_i).State = 7 Then
            WS_1(V_i).SendData V_Chaine 'Envoi du texte de V_Chaine
            DoEvents
         End If
      Next V_i
   End If
End Sub

  1. Voilà votre serveur terminé. Enregistrez-le et testez-le. Tout ce que vous verrez pour le moment est l'adresse IP de votre ordinateur. La liste est vide puisqu'il n'y a aucun client de branché.

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_24bxx.vbp.  Créez ensuite une version .exe de votre programme.

 

Création d'aide
 
- À propos
- Astuce du jour
 
Cryptage
 
- Mot de passe
- Cryptage de fichier
 
Base de données
 
- Bibliothèque
 
Winsock
 
- Serveur de chat
- Client de chat 1
- Client de chat 2
 
Jeu d'arcade
 
- Interface
- Programmation 1
- Programmation 2
- Programmation 3
- Programmation 4
 
Navigateur WEB
 
- Interface 1
- Interface 2
- Interface 3
- Interface 4
- Programmation 1
- Programmation 2
- Programmation 3
- Programmation 4
© Copyright 2002 - Design : Webmasters-fr.net