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

Signaler
Messages postés
10
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
26 mai 2010
-
cs_shadymetal
Messages postés
10
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
26 mai 2010
-
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,
A voir également:

11 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
64
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)
Messages postés
10
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
26 mai 2010

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 ??
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
64
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 ...
Messages postés
10
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
26 mai 2010

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 !!!!!!!!!!!!
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
64
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.
Messages postés
10
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
26 mai 2010

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
Messages postés
580
Date d'inscription
mercredi 20 août 2008
Statut
Membre
Dernière intervention
20 avril 2010

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)
Messages postés
10
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
26 mai 2010

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
Messages postés
10
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
26 mai 2010

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
Messages postés
580
Date d'inscription
mercredi 20 août 2008
Statut
Membre
Dernière intervention
20 avril 2010

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)
Messages postés
10
Date d'inscription
jeudi 14 décembre 2000
Statut
Membre
Dernière intervention
26 mai 2010

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