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:
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.