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

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

Commenter la réponse de cs_coq
taoetc
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Dernière intervention
3 septembre 2007
- 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
Messages postés
145
Date d'inscription
dimanche 2 décembre 2001
Dernière intervention
10 septembre 2009
- 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.