NeoManox
Messages postés5Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention19 février 2009
-
18 févr. 2009 à 16:50
RougailSaucisse
Messages postés118Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention 6 décembre 2010
-
19 févr. 2009 à 18:23
Bonjour,
Je développe actuellement un programme de communication TCP/IP en C#.
Mon problème est le suivant: j'utilise une fonction pour lancer l'écoute du server, il est possible de l'appeler plusieurs fois (par exemple on veut relancer l'écoute après avoir changer de port)...Ce qu'il se passe: à chaque fois que je lance ma fonction, le programme conserve les anciennes instances de mon objet TcpListener c'est a dire que j'ouvre plusieurs port sans les refermer et si j'entre 2 fois le même port bien entendu j'ai une erreur.
Voila mon code pour la fonction:
private void listener()
{
try
{
serverSocket = new TcpListener(getYourIP(), port);
serverSocket.Start();
if (infoLabel != null) writeString(infoLabel, "En attente de clients.", 0);
serverSocket.AcceptSocket();
infoLabel = null;
}
catch
{
if (infoLabel != null) writeString(infoLabel, "Echec de la connexion.", 2);
infoLabel = null;
}
}
Je pensais à qu'à l'origine le fait de recréer un objet TcpListener serverSocket suprimerais l'ancien mais ce n'est visiblement pasle cas, comment supprimer l'ancienne instance?!?
RougailSaucisse
Messages postés118Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention 6 décembre 20101 19 févr. 2009 à 18:23
Pour ma part j'ai realisé un test similaire et ca fonctionne sans encombre:
TcpClient client;
server = new TcpListener(localAddr, port);
server.Start();
Console.WriteLine("Recpetion 1");
client= server.AcceptTcpClient();
//traitement de reception d'infos du client
client.close();
server.close();
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 19 févr. 2009 à 10:26
Certains objets implémentant l'interface IDisposable possèdent une méthode Close() pour une question de logique (pour un fichier, c'est plus logique d'appeler une méthode Close que Dispose par exemple).
La méthode Close fera en interne un appelle à Dispose....