begin process at 2012 02 16 17:18:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > PETIT EXEMPLE DE CHAT AVEC WINSOCK

PETIT EXEMPLE DE CHAT AVEC WINSOCK


 Description

Cliquez pour voir la capture en taille normale
Bon comme le dit le titre, voici un petit exemple d'un chat entre client et serveur via winsock.
Soyez indulgent, c'est l'un de mes premier code! n_n'
Ben le code est banal, on choisis son pseudo et on envoie son texte. On peut aussi choisir le port de connexion depuis le serveur.
Voila voila ...

A+

Source

  • 'Côté client
  • Private Sub Command1_Click()
  • If Command1.Caption = "Se &connecter" Then
  • Winsock.Close
  • Winsock.Connect Text1.Text, Text2.Text
  • End If
  • If Command1.Caption = "Se &déconnecter" Then
  • Winsock.Close
  • Winsock.Listen
  • Command1.Caption = "Se &connecter"
  • Label3.Caption = "Déconnecté"
  • Form1.Height = 2150
  • End If
  • End Sub
  • Private Sub Command2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  • Winsock.SendData "pseudo" & Text3.Text
  • RTB.Text = RTB.Text + Text3.Text + " : " + Text4.Text + vbCrLf + "------------------------------------------------------------------------------------" + vbCrLf
  • End Sub
  • Private Sub Winsock_Close()
  • Winsock.Close
  • Winsock.Listen
  • Command1.Caption = "Se &connecter"
  • Label3.Caption = "Déconnecté"
  • Form1.Height = 2150
  • End Sub
  • Private Sub Winsock_Connect()
  • Winsock.SendData "Connecté"
  • Label3.Caption = "Connecté"
  • Command1.Caption = "Se &déconnecter"
  • Form1.Height = 13000
  • End Sub
  • Private Sub Winsock_ConnectionRequest(ByVal requestID As Long)
  • Winsock.Close
  • Winsock.Accept requestID
  • End Sub
  • Private Sub Form_Load()
  • Form1.Height = 2150
  • End Sub
  • Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
  • Dim data As String
  • Winsock.GetData data
  • If Left(data, 2) = "ok" Then
  • Winsock.SendData "texte" & Text4.Text
  • Text4.Text = ""
  • End If
  • If Left(data, 6) = "pseudo" Then
  • RTB.Text = RTB.Text + Right(data, Len(data) - 6) + " : "
  • Winsock.SendData "ok"
  • End If
  • If Left(data, 5) = "texte" Then
  • RTB.Text = RTB.Text + Right(data, Len(data) - 5) + vbCrLf + "------------------------------------------------------------------------------------" + vbCrLf
  • End If
  • End Sub
  • 'Côté serveur
  • Private Sub Command2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  • Winsock.SendData "pseudo" & Text1.Text
  • RTB.Text = RTB.Text + Text1.Text + " : " + Text2.Text + vbCrLf + "------------------------------------------------------------------------------------" + vbCrLf
  • End Sub
  • Private Sub port_change_Click()
  • Port = InputBox("Indiquer le nouveau port de connection (9999 par défaut) :", "Changement de port", "9999")
  • Winsock.Close
  • Winsock.LocalPort = Val(Port)
  • Winsock.Listen
  • End Sub
  • Private Sub Winsock_ConnectionRequest(ByVal requestID As Long)
  • Winsock.Close
  • Winsock.Accept requestID
  • End Sub
  • Private Sub Form_Load()
  • Form1.Height = 690
  • Form1.Width = 6945
  • Winsock.Close
  • Winsock.Listen
  • End Sub
  • Private Sub Winsock_Close()
  • Winsock.Close
  • Winsock.Listen
  • etat.Caption = "Etat : Déconnecté"
  • Form1.Height = 690
  • Form1.Width = 6945
  • End Sub
  • Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
  • Dim data As String
  • Winsock.GetData data
  • If Left(data, 8) = "Connecté" Then
  • etat.Caption = "Etat : Connecté"
  • Form1.Height = 11580
  • Form1.Width = 6945
  • End If
  • If Left(data, 2) = "ok" Then
  • Winsock.SendData "texte" & Text2.Text
  • Text2.Text = ""
  • End If
  • If Left(data, 6) = "pseudo" Then
  • RTB.Text = RTB.Text + Right(data, Len(data) - 6) + " : "
  • Winsock.SendData "ok"
  • End If
  • If Left(data, 5) = "texte" Then
  • RTB.Text = RTB.Text + Right(data, Len(data) - 5) + vbCrLf + "------------------------------------------------------------------------------------" + vbCrLf
  • End If
  • End Sub
'Côté client

Private Sub Command1_Click()
If Command1.Caption = "Se &connecter" Then
Winsock.Close
Winsock.Connect Text1.Text, Text2.Text
End If
If Command1.Caption = "Se &déconnecter" Then
Winsock.Close
Winsock.Listen
Command1.Caption = "Se &connecter"
Label3.Caption = "Déconnecté"
Form1.Height = 2150
End If
End Sub

Private Sub Command2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Winsock.SendData "pseudo" & Text3.Text
RTB.Text = RTB.Text + Text3.Text + " : " + Text4.Text + vbCrLf + "------------------------------------------------------------------------------------" + vbCrLf
End Sub


Private Sub Winsock_Close()
Winsock.Close
Winsock.Listen
Command1.Caption = "Se &connecter"
Label3.Caption = "Déconnecté"
Form1.Height = 2150
End Sub
Private Sub Winsock_Connect()
Winsock.SendData "Connecté"
Label3.Caption = "Connecté"
Command1.Caption = "Se &déconnecter"
Form1.Height = 13000
End Sub
Private Sub Winsock_ConnectionRequest(ByVal requestID As Long)
Winsock.Close
Winsock.Accept requestID
End Sub
Private Sub Form_Load()
Form1.Height = 2150
End Sub

Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
Dim data As String
Winsock.GetData data
If Left(data, 2) = "ok" Then
Winsock.SendData "texte" & Text4.Text
Text4.Text = ""
End If


If Left(data, 6) = "pseudo" Then
RTB.Text = RTB.Text + Right(data, Len(data) - 6) + " : "
Winsock.SendData "ok"
End If
If Left(data, 5) = "texte" Then
RTB.Text = RTB.Text + Right(data, Len(data) - 5) + vbCrLf + "------------------------------------------------------------------------------------" + vbCrLf
End If
End Sub


'Côté serveur

Private Sub Command2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Winsock.SendData "pseudo" & Text1.Text
RTB.Text = RTB.Text + Text1.Text + " : " + Text2.Text + vbCrLf + "------------------------------------------------------------------------------------" + vbCrLf
End Sub

Private Sub port_change_Click()
Port = InputBox("Indiquer le nouveau port de connection (9999 par défaut) :", "Changement de port", "9999")
Winsock.Close
Winsock.LocalPort = Val(Port)
Winsock.Listen
End Sub


Private Sub Winsock_ConnectionRequest(ByVal requestID As Long)
Winsock.Close
Winsock.Accept requestID
End Sub
Private Sub Form_Load()
Form1.Height = 690
Form1.Width = 6945
Winsock.Close
Winsock.Listen
End Sub
Private Sub Winsock_Close()
Winsock.Close
Winsock.Listen
etat.Caption = "Etat : Déconnecté"
Form1.Height = 690
Form1.Width = 6945
End Sub
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
Dim data As String
Winsock.GetData data
If Left(data, 8) = "Connecté" Then
etat.Caption = "Etat : Connecté"
Form1.Height = 11580
Form1.Width = 6945
End If

If Left(data, 2) = "ok" Then
Winsock.SendData "texte" & Text2.Text
Text2.Text = ""
End If


If Left(data, 6) = "pseudo" Then
RTB.Text = RTB.Text + Right(data, Len(data) - 6) + " : "
Winsock.SendData "ok"
End If
If Left(data, 5) = "texte" Then
RTB.Text = RTB.Text + Right(data, Len(data) - 5) + vbCrLf + "------------------------------------------------------------------------------------" + vbCrLf
End If
End Sub


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture CALCUL DE L'INDICE DE MASSE CORPORELLE (BMI)
Source avec Zip Source avec une capture CONNECTIONS CLIENT-SERVEUR VIA WINSOCK

 Sources de la même categorie

Source avec Zip Source avec une capture GESTIONNAIRE DE TÉLÉCHARGEMENT, AVEC REPRISE ET MULTITHREADI... par Madx23
Source avec Zip Source avec une capture CONVERTIR DU TEXTE RTF EN CODE HTML ET VICE-VERSA par vicosta
Source avec Zip Source avec une capture DICTIONAIRE TEXT/AUDIO/VISUELLE ANGLAIS AVEC WEBBROWSER CONT... par majnounmajda
Source avec Zip Source .NET (Dotnet) NSLOOKUP EN VB.NET OU COMMENT FAIRE UNE REQÛETE DNS EN PRÉCI... par ShareVB
Source avec Zip Source avec une capture MINI SEVEUR HTTP AVEC INTERFACE GRAPHIQUE ET IMPLÉMENTATIONS... par lemout

 Sources en rapport avec celle ci

Source avec Zip SLYSPY(MINI-RAT) par ageryder
Source avec Zip CHAT :SERVEUR/MULTICLIENT par youzou
Source avec une capture SERVEUR/MULTI CLIENTS - WINSOCK REMOTE CONTROL (EXPLORATEUR,... par djine
Source avec Zip Source avec une capture Source .NET (Dotnet) CHAT AVEC SALONS par martien85
Source avec Zip CHAT DE RÉSEAU SANS SERVEUR (V1.3) par jack

Commentaires et avis

Commentaire de PCPT le 12/01/2008 19:46:44 administrateur CS

salut,

un petit peu léger et quelques améliorations possibles....

déjà (comme indiqué par econs sur ta précédente source) pense à toujours mettre OPTION EXPLICIT pour être certain d'avoir toutes tes variables déclarées

ensuite une chose à savoir est que les paquets ne sont pas forcément envoyés comme on le croit, c'est à dire que tu vas envoyer "bonjour", mais l'autre personne peut très bien recevoir "bon" puis "jour"

évidemment en réseau la cnx est trop rapide pour ces coupures mais sur de grandes chaînes c'est très souvent le cas.
aussi pour corriger ce point, 2 choses à mettre en oeuvre :

1) pour t'assurer que le paquet part, un petit DOEVENTS après chaque envoi (surtout si l'utilisateur tape rapidement)

2) mettre en place un buffer. en fait tu ajoutes une sorte de POINTFINAL à tes chaînes (par code évidemment) et à la réception, tant que ce pointfinal n'est pas arrivé, tu reçois sans afficher

voir pour çà la déclaration STATIC

et un point supplémentaire est d'avoir le client et le serveur dans le même projet, te permettant ainsi d'être client ou serveur dans avoir plusieurs exe à balader...


reste ensuite à améliorer le tout avec un interface, des options, des smileys et sons....
++ bon courage

Commentaire de robapt le 12/01/2008 22:27:48

OK merci pour tout ! Je vais encore retravailler un peu tout sa ^^
A+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Client et serveur IRC avec Winsock (Aide !!!) [ par KOOK ] Salut, j'ai télécharger plusieurs sources de client et serveur irc mais aucune ne marche, j'ai un problème avec Winsock, pourriez vous m'aider, existe TRES IMPORTANT !! [ par Lead ] Avis aux utilisateur de winsock.Voila mon probleme :- Application client/serveur Démarrage : Server en écoute et client se connecte au server.Fermetur création d'un client =) [ par Whitewolf ] Salut à tous ! =))Est ce que quelqu'un saurait comment une application client -> server doit aller chercher les informations sur le server. Je m'ex Winsock client qui ne marche qu'une fois! [ par Olivier ] Mon application client serveur fonctionne parfaitement une seule fois.La seconde fois, le client plante sur .connect en annonçant "adresse en cours d' winsock client/serveur [ par Meddah ] je veux réalisé une application qui calcule les tarifs dans un cybercafé je cherche soi un exemple pour base sur lui soi une aide sur winsock car je n winsock client/serveur [ par Meddah ] je veux réalisé une application qui calcule les tarifs dans un cybercafé je cherche soi un exemple pour base sur lui soi une aide sur winsock car je n winsock : [ par Yan ] Voila je code une app client/serveurJe cherche à faire un serveur multi-clientsbon chez mio je lance le machin la connexion s'établit, cool :)Je quitt help me : winsock prob... [ par Hardousss ] Salut tlm !!chui un debutant en vb et c'est ma premiere participation au fameux forum vbfrance.com donc...i trust in ur ingenuity guys to help me sol Peut-on avoir plusieurs connections sur un winsock? [ par crendel ] Je suis en train de faire un logiciel qui marche sur le principeclient/server. J'aimerai mettre plusieurs client connecté au meme server. C'est possib Prob avec un projet Winsock help plz [ par YnOThAr ] Lut all !!! Donc voila, je ne suis encore qu'un débutant en Visual Basic, mais comme apparementc'est un "langage" simple et comme je fais deja un peu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,555 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales