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

warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 23 janv. 2006 à 19:53 - Dernière réponse : cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention
- 1 févr. 2006 à 23:41
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 ^^
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 1 févr. 2006 à 23:41
3
Merci
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#
*/

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de cs_coq
taoetc 346 Messages postés lundi 8 septembre 2003Date d'inscription 3 septembre 2007 Dernière intervention - 24 janv. 2006 à 14:40
0
Merci
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
Commenter la réponse de taoetc
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 24 janv. 2006 à 19:15
0
Merci
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
Commenter la réponse de warenbe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.