houcem001
Messages postés14Date d'inscriptionmardi 29 avril 2008StatutMembreDernière intervention26 décembre 2009
-
22 févr. 2009 à 04:39
josephwrida
Messages postés2Date d'inscriptionjeudi 5 mai 2011StatutMembreDernière intervention 7 mai 2011
-
6 mai 2011 à 15:16
Salut
j'ai un serveur et des clients qui connectent en utilisant le protocole TCP.
Voici au dessous du partie du code concernant la connexion du serveur.
mon probleme que je peux envoyer des messages des clients vers le serveur mais le serveur peut envoyer qu'à au 1er client connecté.
donc je veux envoyer des messages du serveur vers un client en utilisant son adresse IP comme paramètre.
//
public static void connecter(int port)
{
TcpListener ecoute = null;
try
{
ecoute = new TcpListener(IPAddress.Any, port);
ecoute.Start();
TcpClient tcpclient = null;
while (true)
{tcpclient = ecoute.AcceptTcpClient();
ThreadPool.QueueUserWorkItem(lire, new Clientt() {CanalTcp = tcpclient});
ThreadPool.QueueUserWorkItem(ecrire, new Clientt() {CanalTcp = tcpclient});
}.. //j'ai utilisé StreamReader et StreamWriter dans les methodes lire et ecrire
RougailSaucisse
Messages postés118Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention 6 décembre 20101 22 févr. 2009 à 05:25
A chaque fois que tu recois un nouveau "client", ajoute le a une liste. a chaque fois qu'un client stop, retire le de la liste.
Puis pour envoyer le message a un client specifique tu peux imaginer une fonction telle que:
List<Socket> mesClients = new List<Socket>();
[..]
//code ou tu ajoutes tes clients a ta liste a chaque connexion
protected Socket SendMessageToClient(string ip)
{
//on retourne le client de la liste dont l'adresse est egale à l'ip passé en parametre
return mesClients .SingleOrDefault(p => ((IPEndPoint)p.RemoteEndPoint).Address.ToString() == ip);
}
Socket c = this.SendMessageToClient("192.168.0.2");
c.Send()
hum je ne garantie absolument pas la validité de ce code ni même s'il compile, mais c'est plus pour l'exemple que pour la réalisation.