|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : ClientSocketX Dynamique [ Réseau & Internet / Client - Server ] (askil2000)
Informations & options pour cette discussion
|
vendredi 22 juin 2007 à 19:56:15 |
ClientSocketX Dynamique

askil2000
|
Bonjour,
Je suis entrain de développer (just for the fun) un testeur de connexion Internet, celui-ci utilise 2 TClientSocket créé dynamiquement par un system de array en type record :
var TFunc: array of (un TClientSocket)
ensuite on a :
TFunc[I].Sock := TClientSocket.Create(mon form); TFunc[I].Sock.Name := 'MS' + IntToStr(I); TFunc[I].Sock.OnConnect := MSConnect; TFunc[I].Sock.OnRead := MSRead; TFunc[I].Sock.OnError := MSError; TFunc[I].Sock.Tag := I; TFunc[I].Sock.Host := Host; TFunc[I].Sock.Port := Port; TFunc[I].Sock.Open;
Sachant que MS est un TClientSocket sur mon form & que les Evénements OnConnect, OnRead et OnError sont bien là.
Maintenant ma question est un peu complexe, accrochez vous ...
Dans l'evénement OnConnect j'envois au server une variable aléatoire. Dans l'evénement OnRead je reçois l'information traité, mais seulement je ne sais pas quel
TFunc[I].Sock
a envoyé la variable qui a permis le traitement, car mon serveur ne peut me le révéler. Si quelqun a compris quelque chose à se que je viens de dire 
Merci @ vous ...
|
|
|
|
vendredi 22 juin 2007 à 22:40:44 |
Re : ClientSocketX Dynamique
|
|
vendredi 22 juin 2007 à 23:04:09 |
Re : ClientSocketX Dynamique

askil2000
|
Bonsoir WhiteHippo,
J'ai été voir la source que tu m'as proposé, cependant elle ne peut hélasse m'aider car mes sockets sont dynamiques et de plus je n'ai pas acces au serveur.
Je peux donner plus de précisions si toutefois quelqun ne comprenais pas la question.
Merci pour cette suggestion rapide et à bientôt.
|
|
|
|
vendredi 22 juin 2007 à 23:32:12 |
Re : ClientSocketX Dynamique
|
|
samedi 23 juin 2007 à 00:28:29 |
Re : ClientSocketX Dynamique

askil2000
|
Je suis toujours dessus, en effet tu as raison il existe les informations locales et distantes, mais elles ne me sont d'aucune utilité car j'ai l'adresse du server, et l'adresse des deux clients créé dynamiquement sont les mêmes. se que je cherche à faire ne se trouve pas dans les informations relative aux adresses ip mais bien dans l'information proprement dite. Quand on envois deux informations successivement par une boucle for par exemple on a :
for I := 1 to 100 do begin TFunc[I].Sock := TClientSocket.Create(mon form); TFunc[I].Sock.Name := 'MS' + IntToStr(I); TFunc[I].Sock.OnConnect := MSConnect; TFunc[I].Sock.OnRead := MSRead; TFunc[I].Sock.OnError := MSError; TFunc[I].Sock.Tag := I; TFunc[I].Sock.Host := Host; TFunc[I].Sock.Port := Port; TFunc[I].Sock.Open; end;
ensuite on a dans l'evénement OnConnect (soit MSConnect;) :
Socket.SendText(ChaineAvecMaVariable);
et dans le OnRead (soit MSRead;) :
if (J'aiUnMotQuiDitOk) then c'est bon;
les sockets sont bien envoyés dans l'ordre 1 to 100 mais dans la réception il y a un décalage (normal puisque c'est distant) on reçois donc les réponses dans le désordre.
J'aimerais donc différencier ou trouver un astuce pour dire que c'est ma variable qui est bien traité.
J'espère que c'est plus clair à présent merci ....
|
|
|
|
samedi 23 juin 2007 à 09:13:42 |
Re : ClientSocketX Dynamique

sylvunix
|
Bonjour,
Si j'ai bien compris, tous les évènements OnRead pointent sur une même méthode. Donc quand tu reçois une information, tu ne sais pas à quel socket elle est liée.
Pourquoi ne ferais-tu pas un programme multithread, un thread étant associé à un socket. La mise en oeuvre ne doit pas être trop compliquée et je pense que cela pourrais répondre à ton problème. A condition toutefois que je l'ai bien compris.
Sylvain
|
|
|
|
samedi 23 juin 2007 à 11:53:40 |
Re : ClientSocketX Dynamique

WhiteHippo
|
Réponse acceptée !
Pfff c'est dur dur en ce moment
Ton evenement OnRead dispose bien d'un sender !!! donc avec un TClientSocket(Sender).tag tu dois retrouver le tag du socket qui a généré l'evenement. Non ?
Cordialement. "L'imagination est plus importante que le savoir." Albert Einstein
|
|
|
|
samedi 23 juin 2007 à 12:02:40 |
Re : ClientSocketX Dynamique

askil2000
|
Bonjour sylvunix,
Tu as bien cerné mon problème en effet, tous les évènements pointent vers une même "méthode". Le multithread est peut être la solution, je vais reformer mon code afin de voir si il est possible de gérer individuellement les "méthodes".
En tout cas, je ne manquerai pas de confirmer ta réponse si toutefois elle correspond.
Merci @+
|
|
|
|
samedi 23 juin 2007 à 12:07:21 |
Re : ClientSocketX Dynamique

askil2000
|
Bonjour WhiteHippo,
Je me demandais justement comment utiliser ce fameux Tag ?
Thanks !
|
|
|
|
samedi 23 juin 2007 à 12:20:22 |
Re : ClientSocketX Dynamique

askil2000
|
WhiteHippo Win !
C'est nikel, heureusement que tu es là sinon j'aurais refais le prog en multithread 
Merci !
|
|
|
Cette discussion est classé dans : sock, tclientsocket, tfunc, onconnect, onread
Répondre à ce message
Sujets en rapport avec ce message
QQ1 aurrai le composant TClientSocket et TServerSocket [ par JPKalham ]
Car dans la version 7 de Delphi ils n'y sont pas !Merci !
Classe TClientSocket introuvable [ par Smeito79 ]
Bonjour,Je possede Delphi 7 et quand j'ouvre un fichier source que j'ai telecharger sur intrent(sur ce site) , delphi me met qu'il ne connait pas la c
TClientSocket et TServerSocket [ par MAsterC ]
Salut à tous...Je voudrai savoir où que je pourrai me procurer les composant TClientSocket et TServerSocket. Parce que moi j'ai Delphi 7 et je ne les
Content-Encoding: gzip et TClientSocket [ par Acness ]
Bonsoir à tous,Voila mon pb,Quand je reçois des données encodées en gzip avec le composant TClientSocket, celles-ci sont évidemment illisibles, quelqu
TClientSocket ou TNMStrm [ par norton ]
Bonjour,j'airai besoin d'un conseil je dévelope en ce moment un programme pour envoyer des fichier et les reçevoirs.Mais je sait pas quel composants i
Socket asynchrone avec TServerSocket/TClientSocket [ par txo ]
Bonjours, J'ai un probleme quand je tente de me connecter a mon serveur (TServerSocket) avec mon cliient (TClientSocket) sur un port proche de 2000 pa
Erreur avec TClientSocket [ par warezpsx ]
Salut à tous !Est-ce qu'il y a un moyen d'empêcher le message d'erreur d'un ClientSocket lorsqu'il ne parvient pas à se connecter ?En mettant la varia
Est-ce que un Tclientsocket peut recevoir une image de la part d'un Tserversocket??? [ par atupac1 ]
Mon programme client tourne est fait en delphi5 et doit envoyer une liste Tstringlist par socket á un autre programme Serveur qui tourne sous java. Ce
onclientwrite et tclientsocket [ par MoveX ]
jaimerais indiquer avec un tshape lorsque mon client envoie des donnees en changeant la couleur du tshape, un peu a la methode d une led de hd, commen
Utilisation de composant créée dynamiquement [ par taye78 ]
Bonjour,voici le code que j'ai écris pour créer 2 ClientSocket dynamiquement, ensuite je leur attribu quelques propriétés etc. Mais lorsque l'evenemen
Livres en rapport
|
|