cs_Sobieski
Messages postés54Date d'inscriptionmardi 22 mars 2005StatutMembreDernière intervention13 mars 2007
-
4 juil. 2005 à 16:44
cs_Sobieski
Messages postés54Date d'inscriptionmardi 22 mars 2005StatutMembreDernière intervention13 mars 2007
-
5 juil. 2005 à 10:53
Voila, j'ai un serveur TCP auquel vient se connecter un client (marrant non ?)
J'aimerais quand je ferme le client que le serveur se remette en écoute (sachant que le serveur est du genre a envoyer des informations dans une boucle while(true)).
Si j'ai bien compris je dois lancer avant ma boucle while(true) un thread qui fait le if... mais faut il que je lui passe ma classe d'écoute en parametre et que j'encapsule ma boucle while pour relancer la méthode dans l'autre thread ?
cs_Sobieski
Messages postés54Date d'inscriptionmardi 22 mars 2005StatutMembreDernière intervention13 mars 2007 5 juil. 2005 à 10:53
Je reviens avec la source de mon truc complete :
using System.Net.Sockets;
using System.IO;
using System;
using System.Configuration;
using System.Threading;
namespace cs_cenzub
{
/// <summary>
/// Summary description for ServerIHM.
/// </summary>
public class ServerIHM
{
private StreamWriter serverStreamWriter;
private StreamReader serverStreamReader;
private int port=int.Parse((string)ConfigurationSettings.AppSettings["portIHM"]);
private Joueur _j1, _j2, _j3;
public ServerIHM(ref Joueur j1, ref Joueur j2, ref Joueur j3)
{
_j1=j1;
_j2=j2;
_j3=j3;
}
public void Start()
{
//Création du serveur
TcpListener tcpServerListener = new TcpListener(port);
tcpServerListener.Start(); //start server
Console.WriteLine("Serveur d'ihm lancé");
Socket serverSocket = tcpServerListener.AcceptSocket();
try
{
if (serverSocket.Connected)
{
Console.WriteLine("Client connecté");
//open network stream on accepted socket
NetworkStream serverSockStream =
new NetworkStream(serverSocket);
serverStreamWriter =
new StreamWriter(serverSockStream);
serverStreamReader =
new StreamReader(serverSockStream);
}
}
catch(Exception e)
{
Console.WriteLine(e.StackTrace);
}
// Ici si j'ai bien compris je lance un thread d'écoute, que je mette ma boucle while(true) en méthode, pour la rappeler si la condition du if se dégage ?
while(true)
{
this.SendLoc(this._j1);
this.SendLoc(this._j2);
this.SendLoc(this._j3);
this.serverStreamWriter.Flush();
Thread.Sleep(50);
}
public void SendLoc(Joueur j)
{
serverStreamWriter.WriteLine(j.num);
serverStreamWriter.WriteLine(j.type);
serverStreamWriter.WriteLine(j.etat);
serverStreamWriter.WriteLine(j.piece);
serverStreamWriter.WriteLine(j.WifiX);
serverStreamWriter.WriteLine(j.WifiY);
serverStreamWriter.WriteLine(j.WifiErr);
}
}
}