Bonsoir à tous!!

Voici un problème que je ne comprend pas!
Tout d'abord je suis débutant en c#, le but de mon appli est de créer un serveur /client via internet. Hors j'ai un petit soucis avec le code :
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
19
20
21
 
richTextBox1.Text = "Démmarage du serveur...\n";
 
            srv = new TcpListener(IPAddress.Any, 3000); //initialise TcpListener détecte automatiquement les connexion, 
            // IPaddress.Any accecpte toute les connexion IP sur le port 3000
            richTextBox1.Text += "Initialisation du serveur...\n";
            srv.Start();                                            //On lance la boucle d'écoute
            richTextBox1.Text += "Le serveur est prêt à écouter\n";
 
 
           while (true)                                            //Boucle à l'infini
            {
                 Socket client = srv.AcceptSocket();                 // Bloquer quand il n'y a pas de client, AcceptSocket renvoi un socket tout prêt
                 if (client.Connected)
                 {
                    richTextBox1.Text += "client connecté\n";
                    Thread thr = new Thread(new ThreadStart(ListenThread)); //création d'un thread client
                    richTextBox1.Text += "thread actif\n";
                    thr.Start();                                            //Démarre thread
                 }
            }
Mon erreur se trouve à la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 Socket client = srv.AcceptSocket();
Enfin ce n'est pas une erreur, c'est ce qui me fait planter mon appli.
J'aurai voulu votre avis sur mon code, je crèe le serveur avent le client.
Car il sera toujours actif je voudrait juste qu'il attende le client sans planter

Je ne comprend pas du tout pourquoi..

Et pour ListenThread voici la suite:

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
19
20
21
22
23
 
void ListenThread()
        {
            Socket sock = client;                               //récupère le socket prêt
            while (sock.Connected != false)                      //Parler au client tant que ce n'est pas fini
            {
                Byte[] rep = new Byte[32767];                   //Création d'un tableau de byte
                int count = sock.Receive(rep, rep.Length, 0);   //stock donnée dans rep, longeur du champs dans count
                string srep = Encoding.ASCII.GetString(rep);    //Convertir les donnée en string
                string reponse = srep.Substring(0, count);      //On garde les données exacte grâce à la taille
                richTextBox1.Text += reponse + "\n";
                switch (reponse)
                {
                    case "deconnexion":
                        richTextBox1.Text += "déconnexion\n";
                        sock.Shutdown(SocketShutdown.Both);         //si deconnexion on ferme le socket en ecriture/lecture
                        sock.Close();                               // libere le socket
                        break;
                }
            }
            Thread.CurrentThread.Abort();                          //On tue le thread 
            richTextBox1.Text += "thread tué \n";
        }
Merci de m'aider