Bonsoir,
Je me demandais s'il était possible en C# de vérifier si un port donné est ouvert ou non, pour que mon application puisse l'utiliser ou non ?
Merci d'avance,
Julien
Version imprimable
Bonsoir,
Je me demandais s'il était possible en C# de vérifier si un port donné est ouvert ou non, pour que mon application puisse l'utiliser ou non ?
Merci d'avance,
Julien
Bonsoir,
pour vérifier si un port TCP est ouvert tu peux faire ce qui suit
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 using System.Net.NetworkInformation; private bool TcpPortIsOpen(int portNumber) { IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); TcpConnectionInformation[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections(); foreach (TcpConnectionInformation tcp in tcpConnInfoArray) if (tcp.LocalEndPoint.Port == portNumber) return true; return false; }
Merci de ta réponse swif, mais il me retourne à chaque fois false pour tous les ports que je lui passe :(
ET si tu essaye de l'ouvrir dans un Try/Catch?
J'imagine que si c'est occupé une exception sera levée et donc t'indiquera si il est occupé ou non?!?
C'est très certainement car le port n'est pas ouvert...
Ne confonds pas port ouvert sur ta machine et sur ton routeur.
Au cas où tu confondrai, avoir accès à internet donc utiliser le port 80 ou d'autres associés ne veut pas dire que ce ou ces ports sont ouverts sur ta machine. Le port 80 est ouvert sur le serveur, il répond sur ce port mais ta machine, elle utilise un autre port.
Si c'est les ports distant avec lesquels tu communique, que tu souhaite vérifier, change cette ligne
parCode:
1
2 if (tcp.LocalEndPoint.Port == portNumber)
Pour mieux comprendre mets un point d'arret à l'intérieur de la boucle foreach et observe le contenu de tcpConnInfoArray.Code:
1
2 if (tcp.RemoteEndPoint.Port == portNumber)
Bon courage ;)
Port COM, port TCP ?
Pour les deux cas, la solution de giova_fr devrait fonctionner.
Pour les port COM, avec l'utilisation de SerialPort, je ne suis pas sûr qu'il y ait d'autre solution que le Try Catch.
Par contre pour les ports TCP, il y a peut-être plus performant. Tu peux regarder la solution proposée ici :
http://stackoverflow.com/questions/5...t-is-available
Merci pour vos réponses. C'est bien des ports TCP que je parle, je ne l'avais pas spécifié au début :?
C'est vrai que je ne faisais pas la différence entre les ports ouverts sur la machine et sur le routeur. Je vais un peu essayer les solutions que vous avez proposés.
Merci en tout cas :D
J'ai suivi le lien de binoo et la solution proposée sur ce site fonctionne :)
Merci :ccool:
Bonne journée 8-)