IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Problème Client/Serveur Thread


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Points : 18
    Points
    18
    Par défaut Problème Client/Serveur Thread
    Bonjour à tous !

    Voilà je me suis mis il y a très peu de temps au C# et je rencontre 2 3 petits problèmes sur une petite application client/serveur. Voilà mon code tout d'abord :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.Net.Sockets;
    using System.Threading;
     
    namespace Serveur
    {
        public partial class Serveur : Form
        {
     
            Thread Server;
            bool redemarrage_serveur = false;
     
            public Serveur()
            {
                InitializeComponent();
                Server = new Thread(new ThreadStart(Ecoute));
                etat_serveur.Text = "Inactif";
                IP.Text = "127.0.0.1";
                arret.Enabled = false;
            }
     
            public void Ecoute()
            {
                try
                {
                    int port = 85;
                    IPAddress add = IPAddress.Parse("127.0.0.1".ToString());
                    TcpListener SocketEcoute = new TcpListener(add, port);
                    SocketEcoute.Start();
                    Socket MySocket = SocketEcoute.AcceptSocket();
                    MessageBox.Show("Un client s'est connecté !");
                }
                catch
                {
                    MessageBox.Show("Erreur");
                }
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                if (!redemarrage_serveur) Server.Start();
                else Server.Resume();
                etat_serveur.Text = "Démarré";
                suspendre.Enabled = true;
                demarrage.Enabled = false;
                arret.Enabled = true;
            }
     
            private void label1_Click(object sender, EventArgs e)
            {
     
            }
     
            private void etat_serveur_Click(object sender, EventArgs e)
            {
     
            }
     
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
     
            }
     
            private void arret_Click(object sender, EventArgs e)
            {
                Server.Suspend();
                etat_serveur.Text = "Suspendu";
                redemarrage_serveur = true;
                suspendre.Enabled = false;
                demarrage.Enabled = true;
                arret.Enabled = false;
            }
     
            private void button1_Click_1(object sender, EventArgs e)
            {
                if (Server.IsAlive) MessageBox.Show("Thread alive !");
                else MessageBox.Show("Thread détruit !");
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                Server.Abort();
            }
        }
    }
    Premier soucis : j'ai un bouton qui teste l'état du Thread, un qui active l'écoute et un qui doit la fermée. Mais quand je clique sur le bouton arrêt "button2_click" et que je teste le thread après il me dit qu'il est toujours alive alors que si je le teste avant d'ouvrir il me dit bien que le thread est "détruit". Si quelqu'un voit le problème merci d'avance ! Sinon question à part c'est quoi les remplaçantes des méthodes Resume et Suspend ?

    Cordialement, CaporalDead.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Points : 33
    Points
    33
    Par défaut
    Le problème est que tu lances une écoute dans le thread Server. Et quand tu veux arrêter ton thread Server, c'est pas possible car il faut commencer par arrêter les threads lancés par le thread Server.
    Quand tu as un thread qui a lancé d'autres threads, pour l'arrêter il faut commencer par arrêter les threads qu'il a lancé.
    Ce que je te propose donc , c'est d'avoir plutôt un truc comme ca :
    Fichiers attachés Fichiers attachés

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Alors merci déjà d'avoir répondu, j'ai tester votre code mais il ne marche pas le thread est toujours alive :/. Une autre idée ? Merci d'avance.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Points : 33
    Points
    33
    Par défaut
    Alors je sais pas trop ce qui s'est passé dans la manip, mais il manque un point curcial dans le code que je t'ai donné : le SocketEcoute.Stop();
    C'est grâce à ça que tu vas pouvoir tuer ton thread Ecoute. Essaie le code joint....
    Fichiers attachés Fichiers attachés

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Alors déjà merci de votre réponse et désolé si je le remarque que maintenant ^^. Alors j'ai essayé votre programme mais j'ai toujours un petit bug je vous fais suivre mes sources modifiées.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Problème Client Serveur RMI
    Par Malhak dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 01/03/2009, 17h57
  2. probleme client/serveur thread
    Par ded jay dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/01/2009, 12h28
  3. Problème client-serveur : Err 10054
    Par Chop_chop dans le forum C++
    Réponses: 1
    Dernier message: 02/07/2007, 09h17
  4. Problème client-serveur TELNET.
    Par 0v3rb1t dans le forum Réseau
    Réponses: 5
    Dernier message: 20/05/2007, 16h59
  5. [C#] Problème client-serveur TCP
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/06/2006, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo