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)

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

WhiteHippo

Membre Club
Bonsoir

Va voir ici :
  http://www.delphifr.com/codes/SOCKETS-INDEXAGE-CLIENTS_42740.aspx

Cordialement.

"L'imagination est plus importante que le savoir." Albert Einstein

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

WhiteHippo

Membre Club

Soit je ne comprends rien, soit il est vraiment très tard

Avec un TClientSocket, tu as un TCustomWinSocket transmis avec l'événement OnRead qui permet d'obtenir :
  les informations locales (LocalAddress, LocalHost, LocalPort)
  les informations distantes (RemoteAddress,RemoteHost, RemotePort).

Donc, mis à part si tu as mis les mêmes valeurs d'adresse et de port sur chacun de tes clients, tu devrais pouvoir les distinguer les uns des autres par ces propriétés.

Cordialement.


"L'imagination est plus importante que le savoir." Albert Einstein


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

Membre Club
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


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.