Probleme dans winsock [Résolu]

cs_dectroo 30 Messages postés samedi 4 mars 2006Date d'inscription 31 mars 2010 Dernière intervention - 17 juin 2006 à 02:37 - Dernière réponse : cs_dectroo 30 Messages postés samedi 4 mars 2006Date d'inscription 31 mars 2010 Dernière intervention
- 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
@+++
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 17 juin 2006 à 16:44
3
Merci
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

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 17 juin 2006 à 03:28
0
Merci
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
Commenter la réponse de cs_Jack
cs_dectroo 30 Messages postés samedi 4 mars 2006Date d'inscription 31 mars 2010 Dernière intervention - 17 juin 2006 à 12:38
0
Merci
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
@+++++++
Commenter la réponse de cs_dectroo
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 17 juin 2006 à 15:28
0
Merci
salut,
le serveur écoute, le client se connecte!
++
Commenter la réponse de PCPT
cs_dectroo 30 Messages postés samedi 4 mars 2006Date d'inscription 31 mars 2010 Dernière intervention - 17 juin 2006 à 16:02
0
Merci
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
@+
Commenter la réponse de cs_dectroo
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 17 juin 2006 à 16:24
0
Merci
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.
Commenter la réponse de PCPT
katsankat 577 Messages postés vendredi 30 décembre 2005Date d'inscription 12 juillet 2012 Dernière intervention - 17 juin 2006 à 18:04
0
Merci
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.
Commenter la réponse de katsankat
cs_dectroo 30 Messages postés samedi 4 mars 2006Date d'inscription 31 mars 2010 Dernière intervention - 17 juin 2006 à 19:16
0
Merci
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
Commenter la réponse de cs_dectroo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.