TServerSocket : Indexage des clients

Résolu
cs_rafalus Messages postés 6 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 19 mai 2007 - 17 mai 2007 à 23:03
cs_rafalus Messages postés 6 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 19 mai 2007 - 19 mai 2007 à 09:25
Bonjour,
développant actuellement un programme fonctionnant sur internet en utilisant les composants TServerSocket et TClientSocket, j'en suis venu à rencontrer un problème. Après une recherche, ne trouvant pas de réponse concrète, je poste ici. Revenons au problème, je vais essayer d'expliquer simplement :

J'ai une partie client et une partie serveur. Admettons que 58 clients soient connectés au serveur et que le N°37 envoit un texte quelconque que seul le serveur doit traîter pour le ramener vers ce client.

Côté client j'utilise la méthode SendText : ClientSocket1.Socket.SendText(message quelconque);

Le serveur reçoit ce message par l'événement OnClientRead, l'identifie pour savoir qu'en faire et le renvoit par :
for i:=0 to Server.Socket.ActiveConnections-1 do
ServerSocket1.Socket.Connections[i].SendText(message quelconque);

Et c'est bien là le problème, je n'arrive pas à indexer les clients car en utilisant "for i:=0 to Server.Socket.ActiveConnections-1", je créée une boucle qui envoit le message à tous les clients or je veux le renvoyer qu'au N°37. Je me demande donc comment faire pour que le serveur sache que c'est le N°37 qui a envoyé ce message pour remplacer "i" par "37" par exemple.

J'éspère avoir été assez clair dans ma demande, merci d'avance pour vos réponses et bonne prog'.

6 réponses

Utilisateur anonyme
18 mai 2007 à 09:32
Salut,

Je ne cerne pas trop ton problème. Voila alors plusieurs cas

1)Quand le serveur recoit un message du client i, il en renvoit un autre au client i

Var
i:cardinal,;
begin
i:=(Server.Socket.ActiveConnections-1);
ServerSocket1.Socket.Connections[i].SendText(message quelconque);
End;

2)Quand le serveur recoit un message d'un client , il en renvoit un autre au client i
Var
i:Cardinal;
Begin
If (Server.Socket.ActiveConnections-1)=36 then
ServerSocket1.Socket.Connections[i].SendText(message quelconque);
End;

3)Quand le serveur recoit un message d'un client , il en renvoit un autre aux autres clients i sauf celui qui a envoyé le message :
Var
i,j:cardinal;
Begin
i:=(Server.Socket.ActiveConnections-1);
For j:=0 to (Server.Socket.ActiveConnections-1) Do
If i<>j then ServerSocket1.Socket.Connections[j].SendText(message quelconque);
End;

@+
3
Rejoignez-nous