Probleme avec GetData

Guillamue06 Messages postés 157 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 11 juillet 2022 - 3 sept. 2005 à 17:03
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 4 sept. 2005 à 04:30
Je veut que quand je clique sur le bouton 1 du clien le server ouvre le bloc not
Et que quand je clique sur le bouton 2 du clien le server ouvre msn messenger

mon probleme est que le server ouvre les deux en méme temp

il y auré un probleme avec ce bou de code du server :

Winsock1.GetData "1"
Command1_Click
Winsock1.GetData "2"
Command2_Click


Merci d'avance pour vos explications

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 sept. 2005 à 04:30
Salut
Tu dois avoir un affreux "On Error Resume Next" avant ces lignes car ce que tu as écrit n'est pas cohérent :
Tu écris Winsock1.GetData "1"
Ca veut dire que tu veux lire les données reçues ... mais tu lui donne ce "1" à la place de la variable chaine qui doit recevoir les infos.
C'est clair que ça doit pas marcher terrible.

Ce qu'il faut faire :
Je suppose que tu es dans la procédure qui s'appelle Winsock1_DataArrival ? (il va vraiment falloir que je crée une section "boule de cristal" !)
Dedans (comme expliqué dans l'aide de VB6), il suffit de faire :
Dim Données As String
Winsock1.GetData Données
pour récupérer les infos transmises.
Libre à toi d'interpréter les infos transmises pour savoir si c'est un "1" ou un "2" qui est reçu :
Select Case Données
Case "1" : Command1_Click
Case "2" : Command2_Click
End Select

Par contre, tu vas rencontrer de nouveaux problèmes : (voir les dizaines de messages à ce propos dans le forum) : Si tu expédies des données l'un derrière l'autre, "1" puis "2" juste après, côté réception, ton Winsock recevra "12" et non pas "1" une première fois et "2" la fois d'après. C'est à cause de la bufferisation des données.
Il faut donc que tu ajoutes un caractère de détection de fin de message (n'importe quoi qui ne risque pas d'apparaitre dans tes messages, Chr(0) par exemple) afin de faire le découpage lors de la réception :
Envoi --> Winsock1.SendData "1" & Chr(0)
Réception --> Données vaudra "1" suivi de Chr(0)
ou encore --> Données vaudra "1" suivi de Chr(0) suivi de "2" suivi de Chr(0)
Il suffit de faire un Split (regarde dans l'aide de VB ou sur le forum) pour séparer chaque message facilement.

Evite au maximum de mettre des "On Error Resume Next" dans tes programmes : c'est sur, tu n'es plus emmerdé avec les erreurs, mais après, tu ne peux plus savoir quelle ligne a causé l'erreur.

La prochaine fois que tu poses une question, essaye de donner le maximum d'info, parce que c'est galère d'imaginer ce que tu cherches (tu n'es pas le seul) !

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

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
Rejoignez-nous