Bonjour,

Je suis sur un projet de Chat Serveur/Client.
Mon serveur est fait de tel sorte:
L'initialisation du serveur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
IPAddress[] addr = Dns.Resolve("").AddressList;
                label_ip.Text = addr[0].ToString();
                //Init socket serveur
                sock_serveur = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                sock_serveur.Bind(new IPEndPoint(addr[0], 8001));
                //On initialise la liste de clients
                liste_client = new List<Client>();
                //On initialise la liste de chatroom
                liste_chan = new List<ChatRoom>();
                //1èrer chatroom, celle qui servira de fil de discussion général
                ChatRoom general = new ChatRoom("general");
                text_chan.Text = "general";
                //On l'ajoute à la liste des chatroom
                liste_chan.Add(general);
                //param serveur
                sock_serveur.Listen(10);
Un thread qui gère la connexion des clients:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void wait_client()
        {
            while (true)
            {
                //On accepte le Connect du client
                Socket buf_sock = sock_serveur.Accept();
                //On cré un client buffer que l'on ajoute ensuite à la liste des clients
                buf_client = new Client(buf_sock);
                liste_client.Add(buf_client);
                //On stocke le nombre pour le thread suivant
                nombre_sock_client = liste_client.Count;
                this.Invoke(this.recept_nb_client, new object[] { nombre_sock_client.ToString() });
                //Thread de communication
                Thread reception = new Thread(new ThreadStart(ThreadProcess));
                reception.IsBackground = true;
                reception.Start();
            }
        }
A chaque fois qu'un client se connecte, je stocke le socket via une liste de clients.
A chaque fois qu'un message est envoyé, je le gère via un système de flag.

Coté client, un Form demande le nom du client puis une fois saisie, il envoi un connect au serveur.
Tout se passe très bien pour un client, mais dès qu'un deuxième client se connecte, je n'arrive plus à envoyer de message depuis le 1er client. Et ainsi de suite, si un 3ème se connecte, le 2ème ne peut plus non plus écrire. Ils reçoivent pourtant tous les messages venant du dernier connecté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
// Ajouter un client
                    client = new Client(textBox_pseudo.Text, textBox_mdp.Text, null);
                    IPAddress[] addr = Dns.Resolve("").AddressList;
                    IPAddress ipAd = addr[0];
                    client._socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    client._socket.Connect(ipAd, 8001);
                    // Envoie du msg au serveur
                    Message msgbuf = new Message(0, "serveur", textBox_pseudo.Text, textBox_pseudo.Text);
                    msgbuf.envoi_msg(msgbuf, client);
                    // Ouverture du Chat Room
                    Form_Acceuil acceuil = new Form_Acceuil(client);
                    this.Visible = false;
                    acceuil.Visible = true;
La classe Client contient le nom d'un client le socket qui le lie au serveur.
Et voici la fonction permettant d'envoyer des messages:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
string json = JsonConvert.SerializeObject(msg);
            int nbByteSent = client._socket.Send(Encoding.UTF8.GetBytes(json));
Quelqu'un aurait-il une idée de ce qui peut provoquer cela? D'après mes test personnels, les clients envoient bien les messages, mais ils ne sont pas reçus par le serveur (quand ils ne viennent pas du dernier connecté...)

Merci d'avance!