houcem001
Messages postés14Date d'inscriptionmardi 29 avril 2008StatutMembreDernière intervention26 décembre 2009
-
22 févr. 2009 à 23:29
houcem001
Messages postés14Date d'inscriptionmardi 29 avril 2008StatutMembreDernière intervention26 décembre 2009
-
23 févr. 2009 à 14:25
Salut je suis entrain de programmer une plateforme de discussion mais j'ai un probleme pour envoyer des messages à un client sachant son adresse IP .
dans mon code ci dessous je peux pas envoyer qu'à un seul client
namespace PlateformeDeDiscussion
{
class Clients
{
private static string reponse = null;
private static string demande = null;
public static void demander(string s)
{
demande = s;
}
public static string reponser()
{
return reponse;
}
public static void rep()
{
reponse = null;
}
public void connecter(String Adress, int port)
{
try
{
TcpClient tcpClient = new TcpClient(Adress, port);
ThreadPool.QueueUserWorkItem(ecriture,tcpClient);
using (NetworkStream networkStream = tcpClient.GetStream())
{
using (StreamReader reader = new StreamReader(networkStream))
{
using (StreamWriter writer = new StreamWriter(networkStream))
{
writer.AutoFlush = true;
while (true)
{
reponse = reader.ReadLine();
}
}
}
}
}
catch (Exception e) { } //Console.WriteLine(e.Message);
finally { Serveurs.tclient.Clear(); }
}
public void ecriture(object info)
{
using (TcpClient tcpClient = info as TcpClient)
using (NetworkStream networkStream = tcpClient.GetStream())
{
using (StreamReader reader = new StreamReader(networkStream))
{
using (StreamWriter writer = new StreamWriter(networkStream))
{
// flux de sortie non bufferisé
writer.AutoFlush = true;
while (true)
{
if (demande != null)
demande += "\r\n";
writer.Write(demande);
demande = null;
Thread.Sleep(50);
}
}
}
}
}
}
class Serveurs
{
private static string reponse2;
private static string demande2;
public static ArrayList tclient = new ArrayList();
public static List<socket> mesClients = new List<socket>();
public static void demander(string s)
{
demande2 = s;
}
public static string reponser()
{
return reponse2;
}
public static void rep()
{
reponse2 = null;
}
public static void connecter(int port)
{
TcpListener ecoute = null;
try
{
ecoute = new TcpListener(IPAddress.Any, port);
ecoute.Start();
ThreadPool.SetMinThreads(10, 10);
ThreadPool.SetMaxThreads(10, 10);
TcpClient tcpclient = null;
while (true)
{
tcpclient = ecoute.AcceptTcpClient();
ThreadPool.QueueUserWorkItem(lire, new Clientt() {CanalTcp = tcpclient});
ThreadPool.QueueUserWorkItem(ecrire, new Clientt() {CanalTcp = tcpclient});
tclient.Add((tcpclient.Client.RemoteEndPoint as IPEndPoint).Address.ToString());
}
}
catch (Exception ex)
{
//Form3 form3 = new Form3();
//form3.Text = ex.Message;
}
finally
{
ecoute.Stop();
}
}
public static void lire(Object infos)
{
Clientt client = infos as Clientt;
try
{
using (TcpClient tcpClient=client.CanalTcp)
{
using (NetworkStream networkStream = tcpClient.GetStream())
{
using (StreamReader reader = new StreamReader(networkStream))
{
using (StreamWriter writer = new StreamWriter(networkStream))
{
// writer.AutoFlush = true;
while (true)
{
reponse2 = reader.ReadLine();
}
}
}
}
}
}
catch (Exception e)
{
// Form3 form3 = new Form3();
//form3.Text = e.Message;
}
}
public static void ecrire(Object infos2)
{
Clientt client1 = infos2 as Clientt;
try
{
using (TcpClient tcpClient=client1.CanalTcp)
{
using (NetworkStream networkStream = tcpClient.GetStream())
{
using (StreamReader reader = new StreamReader(networkStream))
{
using (StreamWriter writer = new StreamWriter (networkStream))
{
writer.AutoFlush = true;
demande2 = null;
while (true)
{
if (demande2 != null)
demande2 += "\r\n";
writer.Write(demande2);
demande2 = null;
Thread.Sleep(50);
}
}
}
}
}
}
catch (Exception e)
{
//Form3 form3 = new Form3();
//form3.Text = e.Message;
}
}
internal class Clientt
{
public TcpClient CanalTcp { get; set; }
//public int NumClient { get; set; }
}
}
}
crougni
Messages postés18Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention 3 mars 2009 23 févr. 2009 à 12:19
Salut
je crois qu'il y a eut un gros problème de retour chariot là
Sinon, tu développe un soft Serveur et un soft Client qui se connecte à ce serveur et permet dialoguer avec l'ensemble des clients connectés , ou bien un soft qui fait office de client et de serveur en même temps, et où les utilisateurs doivent se connecter sur chacun des utilisateurs avec lesquels ils souhaitent dialoguer ???
houcem001
Messages postés14Date d'inscriptionmardi 29 avril 2008StatutMembreDernière intervention26 décembre 2009 23 févr. 2009 à 14:25
j'ai pas encore implanté le code de connexion entre 2 clients.
mon probleme pour le moment et que je peux pas envoyer un message à un client spécifié depuis le serveur.
donc je veux envoyer un message à un client en entrant comme paramètre son adresse IP.
merci