Eviter une exception lorsque l'on se connecter a un port fermé [Résolu]

Signaler
Messages postés
145
Date d'inscription
dimanche 2 décembre 2001
Statut
Membre
Dernière intervention
10 septembre 2009
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Yop
je cherche a me faire un scanner pour mon reseau (probleme de routeur)
et plutot que d'en prendre un tout fait j'ai voulu me faire le mien ^^

donc voila j'ai un probleme
j'ai ce code:

for (int i = portdeb; i < portfin; i++)
{
TcpClient tcpclient = new TcpClient(tbip.Text, i);
if (tcpclient.Connected)
{
NetworkStream ns = tcpclient.GetStream();
byte[] bytes = new byte[tcpclient.ReceiveBufferSize];
ns.Read(bytes, 0, (int)tcpclient.ReceiveBufferSize);
string reponse = Encoding.UTF8.GetString(bytes);
row.Add(i.ToString(), reponse);
}
tcpclient.Close();
}

le probleme est que quand un port est fermé je leve une exception... :(
comment faire pour eviter ça? je veux que lorsque le port est fermé il ne se passe rien et ça passe au port suivant...
donc soit je leve les exception et je les jete, soit je fais autrement
la premiere solution me plait guere car trop lente... (je voudrai qu'il s'ecoule que 3 secondes avant qu'il passe a un autre port...)

de l'aide svp ^^

3 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Salut,

Le try-catch pas propre ?!?!
Le temps d'attente n'a rien à voir avec la gestion d'exception, ça dépend de la manière dont la machine cible gère les demandes sur ports fermés :
- soit elle répond que l'accès au port est refusé, auquel cas l'échec est rapide.
- soit elle se contente d'ignorer la demande et ne répond pas, auquel cas tu attend jusqu'à arriver au délai de timeout.

/*
coq
MVP Visual C#
*/
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
3
tu colles ton code dans un try
{
//code
}catch (Exception )
{
}

cela intercepte ton exception sans que tu sortes de ton programme

pas super comme solution, mais ca marche


Be happy , by
Tao
Messages postés
145
Date d'inscription
dimanche 2 décembre 2001
Statut
Membre
Dernière intervention
10 septembre 2009

oui mais je veux eviter ça
pour deux raisons: ça me semble pas super "propre" et seconde raison, je veux que ça evite d'attendre une reponse de l'ordi distant pendant trop longtemp
avec cette methode ça attend une 10e de secondes voir plus avant de lever l'exception... je veux pouvoir faire en sorte a ce que ça n'attende que 5 secondes par exemple ou meme 3