Winsock a l'aide l'humanité...

cs_shadymetal Messages postés 10 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 26 mai 2010 - 14 mars 2010 à 01:37
cs_shadymetal Messages postés 10 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 26 mai 2010 - 20 mars 2010 à 12:41
bonsoir tout le monde,
voila pour mon projet de fin d'etude je voudrais realisé une application reseau basé sur les socket avec biensur le vb6,
alors j'ai crue comprendre que le control winsock est une trés bonne invention .... sauf que il y'a pas asséz de tutorial la deçu
biensur qu'il y en a, mais je voudrais savoir des chose plus poussé, par example creer une application ( biensur client serveur)
pour prendre le controle de l'ordinateur ou l'application client est installé, est il possible de faire sa avec winsock ?

ou si sa depasse sa limite ?

je voudrais surement pas qu'on me donne un code source tout prés mais je serai reconaissant si on m'aidé a trouvé la voix,
mon but est de savoir vraiment les limite de ce control et si il y a mieux ( toujours sur vb6),

j'ai d'autre question a posé mais je voudrais pas devenir lourd deja

merci a tousssss,

11 réponses

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
14 mars 2010 à 03:39
Salut
Oui, c'est partiellement possible.
-1- Tu veux contrôler un PC à distance : Commence par créer un programme capable de contrôler le PC sur lequel tu travailles : Pour le piloter à distance, tu n'auras plus qu'à lui envoyer des ordres génériques qui lanceront les fonctions que tu auras créées.

Pour débuter avec les socket et bien comprendre leurs mécanismes, deux réalisations à faire :
-2- Créer un petit chat qui enverrait de courts messages
Tu apprendras ainsi à mettre en oeuvre les sockets pour qu'ils se connectent et échangent des petits textes.
Des sources existent sur le site
-3- Créer un programme de trabsfert de fichier
Là, tu devras comprendre comment fonctionnent les buffers et comment les sockets fournissent des paquets de données q'il faudra réassembler.
Des sources existent sur le site

Quand tu auras maîtrisé ces trois points, tu n'auras plus qu'à assembler les pièces du puzzle.

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
cs_shadymetal Messages postés 10 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 26 mai 2010
14 mars 2010 à 20:39
merkii jack tu m'a deja doné de bonne idée
au faite g t deja entrain de realisé un mini chat j'ai reussi a envoyé entre client serveur des doné ( enfin , une doné koi une seul variable),
et la je voudrais pouvoir envoyé deux variable separement , et donc a la reception , je doi recevoir deux variable separement , je doi metre un autre control winsock ou just le premier deja utilisé sufirrais ??
0
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
15 mars 2010 à 09:54
Non, un seul socket suffit.
C'est à toi de générer une structure d'échange.
Ce genre de problème, tu le rencontres aussi dans les Chats où il est nécessaire de découper les messages --> charge et analyse des sources sur le sujet.
Exemple d'émission de plusieurs variables :
monSocket.SendData Chr$(0) & CStr(maVar1) & Chr$(1) & CStr(maVar2) & Chr$(1) & CStr(maVar3) & Chr$(255)

où les Chr$ servent de délimiteurs au texte échangé et qu'ilo te sera facile de redécouper à la réception, par exemple avec un Split.
(0) : début de message
(1) : délimiteur entre chaque variable
(255) : fin du message

Ce n'est qu'un exemple, tu peux très bien imaginer remplacer ces Chr$ par de vrais textes "DEBUT", "INTERCALAIRE", "FIN" : il te suffit d'adapter la méthode de récupération à la réception, le principal est que tu ne doit pas utiliser de texte que tu pourrais retrouver parmi les vraies datas transmises ...
0
cs_shadymetal Messages postés 10 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 26 mai 2010
15 mars 2010 à 14:54
oki aten j'ai pas tout compris
par example dans mon chat, je voudrais envoyé deux variable , une contien le pseudo et une autre contient le message

je doi fair quelque chose genre ça:

monSocket.SendData Chr$(0) & CStr(varPseudo) & Chr$(1) & CStr(VarMess) & Chr$(255) 



si c'est le cas , alors comment je vais traité la method a la reception ( data arrival...)?

j'ai pas bien compris le fonctionnement de la method

si y avait un cour qui expiqué les proprieté avancé de cette method sa serait beaucoup utile

merci !!!!!!!!!!!!
0

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

Posez votre question
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
15 mars 2010 à 15:47
Le principe est d'ajouter quelque chose à tes variables pour les encadrer et facilité le dépouillement à la réception.
Si tu dois envoyer deux variables par exemple, tu peux imaginer faire un SendData de :
Chr$(0) & CStr(varPseudo) & Chr$(1) & CStr(VarMess) & Chr$(1) & CStr(VarAutre) & Chr$(255)
"DEBUT" & CStr(varPseudo) & "SEPARATEUR" & CStr(VarMess) & "SEPARATEUR" & CStr(VarAutre) & "FIN"
"toto" & CStr(varPseudo) & "lucienne" & CStr(VarMess) & "lucienne" & CStr(VarAutre) & "roger"
tout ce que tu veux, du moment que, côté réception, tu saches faire le découpage.

Comme il va s'agir de repérer un texte dans un texte, il faut à tout prix que les séparateurs/bornes ne puissent être confondus avec les données elles-même.
Il faut aussi penser aux méthodes de découpage (Instr, Split ...).
Tu verras aussi que plusieurs messages peuvent se suivent dans le buffer lors d'un DataArrival.
Il faut donc aussi pouvoir découper les messages avant de découper ce qui le compose.
C'est à toi d'inventer un "protocole" d'échange.

Je me répète : des tas de sources traitent de ces sujets avec des méthodes diverses --> charge-les et analyse les méthodes.
0
cs_shadymetal Messages postés 10 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 26 mai 2010
17 mars 2010 à 13:59
alors ou j'en suis.
j'ai cherché comme tu ma dit sur le forum mais j'ai toujours pas trouvé une example qui traite bien l'envoi et la reception de plusieur variable via un winsock,
mais par contre j'ai pu trouver une solution de contournement pour arrivé a envoyé le pseudo et le message
en faite c'est simple ,j'ai just tout mi sur une seul variable et l'envoyer comme sa , et à la reception, affiché la variable reçu tel qu'elle est venu...:

le code de l'envoye ressemble a ça :
 Winsock1.SendData (txtPseudo.Text & " dit:" & vbCrLf & txtSend.Text) 


et le code de la reception ressemble donc a ça:

  Winsock2.GetData strData, vbString
   
      txtStatus.Text = txtStatus.Text & vbCrLf & _
strData & vbCrLf

voila mais je suis conscient que le problem initial est toujours pas resolu (l'envoi de deux variable via un seul control winsock), je continue mes recherches, et je reste a l'ecoute de tes conseils
merci d'avance
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
18 mars 2010 à 11:16
salut
tu voulait dire quoi par "envoi de deux variable via un seul control winsock"


Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
0
cs_shadymetal Messages postés 10 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 26 mai 2010
18 mars 2010 à 15:07
bien dit

alors se que j voulait dire comme j'ai expliqué plus haut

dans une application chat que j'ai creer, il y a donc deux form, serveur et client

quand par exemple le client envoye un message au serveur il lui envoi en faite une variable contenant le pseudo du client et une autre variable contenant le message, sa j'arrive a le faire au faite,

le soucis est plutot dans la reception , comment faire pour separer les deux variable,
parce que a la reception ,sur l'evenement data arrival de winsock, avec la method "winsock.getdata" elle permet ( d'aprés ce que je sais ) de stocké tout le message dans une seul variable , comme j'ai deja ecrit plus haut

alors je suis toujours pas arrivé separer le message a la reception.... je suis entrain de chercher dans cette voix la
0
cs_shadymetal Messages postés 10 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 26 mai 2010
18 mars 2010 à 20:23
ok c'est bon j'ai compris comment la method split fonctionne et donc j'ai decoupé et recuperer les donner a la reception .....

j'ai fait un peu comme ça

a l'envoi des donné j'ai mi ":" comme separateur
 Winsock1.SendData (txtPseudo.Text & ":" & vbCrLf & txtSend.Text)


et du coup a la reception j'ai mi ça :

 
 Dim strData As String
   
   Winsock2.GetData strData, vbString
   
   msgsplit = Split(strData, ":")
  
   
   

      txtStatus.Text = txtStatus.Text & vbCrLf & Msgsplit(0) & " dit :" & vbCrLf & _
 msgsplit(1) & vbCrLf



je sais pas si c'est la method la plus propre mais pour l'instant sa marche,
maintenant je vais joué un peu avec ça avant de passé a l' étape suivante ( dailleur je sais meme pas ce que c'est )


je vous recontacte dés que j'ai une nouvelle question ( chose que je pense que sa vas pas trop tardé ...)


merci a vous
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
19 mars 2010 à 14:12
salut
je sais pas si c'est la method la plus propre

oui je crois que c'est la bonne méthode pour le moment
mais je te conseil aussi d'ajouter un caractère ou mot qui indique le début de message et un autre qui indique la fin comme sa tu saura que ta reçu la totalité du message et le Split fonctionnera comme tu veut, sinon sa pourra te poser des problème quand le pc est surcharger et que tu reçoit des données manquante comme au lieu de recevoir : txtPseudo.Text & ":" & vbCrLf & txtSend.Text tu recevera que vbCrLf & txtSend.Text et t'aura pas de Split ce qui va générer une erreur quand tu mettra msgsplit(0) et msgsplit(1).
essai par exemple d'envoyer un message comme sa: [debutmsg] & txtPseudo.Text & ":" & vbCrLf & txtSend.Text & [finmsg]

Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
0
cs_shadymetal Messages postés 10 Date d'inscription jeudi 14 décembre 2000 Statut Membre Dernière intervention 26 mai 2010
20 mars 2010 à 12:41
salut

oui c'est vrais , il y as pas mal de chose a ajouté même crypter le message si je veux , l'important c'est de comprendre le principe

là je me suis mi sur une application de transfert de fichier , comme jack me la conseillé merci pour tes précieuses conseils,

je viens à peine de commencer et j'y vois pas encore de la lumière, mais je vais me battre avec encore et encore avant de vous ennuyer avec mes questions

à très bientôt j'espère
0
Rejoignez-nous