Probleme dans winsock

Résolu
cs_dectroo
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010
- 17 juin 2006 à 02:37
cs_dectroo
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010
- 17 juin 2006 à 19:16
je suis un jeune debutant en programmation VB6 , je suis entrain de faire mon premier chat perso
tous d'abord j'ai utilsé dans l'application 2 winsock pour les client et le serveur .
bon le probleme reside dans le fait kan la connection est faite entre le serveur et le client , la donné lit en serveur se change toutes seul
par example si la donné est = " salam" il m'ecrit  "???lm"
SVP si kelk'un a  une solution et merci d'avence
@+++

8 réponses

cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
17 juin 2006 à 16:44
Re
Rien vu de choquant dans ton programme qui devrait fonctionner.
PCPT a raison, le message n'arrive pas obligatoirement en une seule fois, mais dans ce cas, par exemple, tu recevrais SA puis LAM sur des lignes différentes, ce qui ne semble pas être ton cas.
Si cela arrivait, il faudrait charger et analyser quelques sources de Chat sur vbfrance et regarder comment faire + lire le forum sur cette question fréquente.
De toute façon, dans ton cas, pour les textes courts, pas de soucis.

Déclarer le type de la variable Data (attention, Data est un mot clé de VB ! --> sData)
Dim sData As String
Je pense que le problème peut venir de là : Data est un objet pour VB

Par sécurité, adopte la syntaxe complète de la méthode GetData :
Winsock1.GetData sData, vbString, bytesTotal

Comme je suis champion du monde de boule de cristal, j'ai peut-être trouvé ton erreur qui n'aurait rien à voir avec les Winsocks :
Le TextBox qui reçoit les messages (Text1) a t-il la propriété MultiLine à True ?
Sinon, tes textes seraient l'un derrière l'autre et séparés par des blocs noirs bizarres.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
3
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
17 juin 2006 à 03:28
Salut
Bizarre. Il n'y a jamais de problème de qualité.
Vérifie la manière dont tu récupères les données.
Dans quoi sont stockées les chaines avant expédition ? un TextBox standard ?

Apprend à débugguer et vérifier, à certains points de passage de ton programme, la valeur de tes variables :
Par exemple, là où tu fais ton .SendData, pose ta souris sur cette ligne et tape la touche F9.
Le programme s'arrêtera dessus au prochain passage.
Survole avec la souris la variable que tu envoyes --> Il affichera le contenu --> Vérifie que la donnée d'origine est bien propre.
Tu peux aussi aller dans la fenêtre de débuggage (Ctrl-G) et taper des commandes du genre ? maVariable (le ? est l'abréviation de Print) pour qu'il affiche son contenu.
Ensuite, tu peux faire :
F8 pour n'exécuter que cette ligne et s'arrêter sur la suivante
F5 pour continuer le programme

Fais de même côté réception et vérifie la chaine que tu reçois au moment de la réception, avant de l'afficher dans un TextBox.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
cs_dectroo
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010

17 juin 2006 à 12:38
bon j'ai ce ke tu ma dit mé la donnée est tout vide
bon voilà un petit exmple pour me le courigé:
le server:
Private Sub Command1_Click()
Winsock1.Connect


End Sub


Private Sub Command2_Click()
Winsock1.SendData Text2.Text
Text1.Text = Text1.Text & vbCrLf & Text2.Text
Text2.Text = ""


End Sub


Private Sub Form_Load()
Command2.Enabled = False


Winsock1.RemoteHost = "81.192.251.84"      ' ip du serveur
Winsock1.RemotePort = 208                 ' le port sur lequel le programme se connecte
End Sub


Private Sub Winsock1_Connect()
Command1.Enabled = False
Command2.Enabled = True
End Sub


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData Data    ' lire la donnée entrée
Text1.Text = Text1.Text & vbCrLf & Data  'ecrire la donnée immédiatment dans la zone text


End Sub
client:

Private Sub Command1_Click()
Winsock1.SendData Text2.Text
Text1.Text = Text1.Text & vbCrLf & Text2.Text
Text2.Text = ""


End Sub


Private Sub Form_Load()
Winsock1.LocalPort = 208
Winsock1.Listen


End Sub


Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
Winsock1.SendData requestID & ": vient de se connecté"


End Sub


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData Data
Text1.Text = Text1.Text & vbCrLf & Data
End Sub


ce lui là est le prgramme de chat entre 2 pc distant mé sa marche pas
svp dit moi le probleme dans cette source
Merci d'avence
@+++++++
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
17 juin 2006 à 15:28
salut,
le serveur écoute, le client se connecte!
++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_dectroo
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010

17 juin 2006 à 16:02
wé wé ta raison g mit le serveur ki écoute et le client ki se connecte mé sa marche pas
le problem c'est que la donnée data = "??"
svp si vous avez un peit code a mettre , je sais pas , la connection est faite mé les donnée se change tous seul....!!!
plz help me
@+
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
17 juin 2006 à 16:24
les données ne peuvent pas "changer". elles arrivent en plusieurs paquets donc data peut ne pas contenir tout le message envoyé (il faut utiliser un buffer static).

ton problème vient d'ailleurs et le code que tu as copié est incomplet pour qu'on puisse t'aider à isoler le problème.
0
katsankat
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3
17 juin 2006 à 18:04
Salut les amis :)

Jack a raison:
Winsock1.GetData
Data
ne retournera rien.

En revanche
Dim strData as string

Winsock1.GetData strData


fonctionne.


Il vaut mieux déclarer toutes les variables pour une application réseau
sinon t'as le temps d' aller boire le café avant de recevoir une
réponse.
0
cs_dectroo
Messages postés
30
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
31 mars 2010

17 juin 2006 à 19:16
merci sa fonction bien , g programmer dèjà tous un chat client/server avec des commande d'administration et c'était le même probleme....
mant c fini et si je termine le programme je mis la source dans votre site

@ merci Admins
0