Bonjour,
J’ai développé un petit service d’échange de messages via une liaison TCP avec les classes TcpClient et TcpListener
Et j’ai rencontré quelques soucis quand j’ai voulu tester le cas où la liaison est interrompue (j’arrête le serveur)

Du coté serveur :

public class ServeurMCT
{
private Form1 forme;
private TcpListener serveur;
private TcpClient client;
private NetworkStream flux;

//...

public void Arreter()
{
client.Close();
serveur.Stop();
}
}


Du coté client :

public class ClientTCP : TcpClient
{

public ClientTCP()
: base()
{
}

private NetworkStream fluxTCP;

public byte[] EnvoyerMessage(byte[] message, ref string erreur)
{
byte[] temp = new byte[1024];
byte[] reponse = null;
string exMessage = "";

try
{
// on envoie
this.fluxTCP.Write(message, 0, message.Length);
// --------------------------------------------------------------------------
// puis on attend la réponse
int nbOctets = this.fluxTCP.Read(temp, 0, temp.Length);
reponse = new byte[nbOctets];
for (int i = 0; i < nbOctets; i++)
reponse[i] = temp[i];
}
catch (SocketException ex)
{
exMessage = ex.Message.ToString();
}
catch (IOException)
{
exMessage = "Non connecté au serveur";
}
catch (Exception ex)
{
exMessage = ex.Message.ToString();
}
finally
{
erreur = exMessage;
}
return reponse;
}
}


Donc, si à un moment j’arrête mon serveur et que j’essaie à nouveau d’envoyer un message
Il n’y a pas d’exception de levée pour signaler que la connexion a été interrompue…
ça me renvoie un tableau reponse de dimension 0…
Par contre, si j’exécute mon appli en pas à pas dans la méthode EnvoyerMessage, je passe bien dans le catch (IOException) …

J’ai bien affecté des valeurs aux propriétés ReceiveTimeout et SendTimeout dérivées de TcpCLient…

Quelqu’un pourrait-il me dire d’où ça vient ?...
Merci