Gibt es eine Möglichkeit, mit C# festzustellen, ob ein Port verfügbar ist? Ich möchte überprüfen, bevor ich eine WCF ServiceHost-Instanz mit einem bereits verwendeten Port starte :-)Ermitteln, ob der Port verwendet wird?
Antwort
Sie können nicht feststellen, ob ein Port verfügbar ist. Sie können nur
- bestimmen, dass Sie die Kontrolle über einen Port haben
- , dass ein Port an einem gewissen Punkt in der Vergangenheit
verfügbar war Sofern Sie den Port steuern, indem eine bestimmte Socket gebunden ist und Zuhören Am Port ist es möglich, dass ein anderer Prozess die Kontrolle über den Port übernimmt.
Die einzige zuverlässige Möglichkeit zu wissen, ob ein Port verfügbar ist, besteht darin, zu versuchen, darauf zu hören. Wenn Sie Erfolg haben, ist der Port verfügbar und Sie haben die Kontrolle. Sonst weißt du, dass der Port irgendwann in der Vergangenheit und möglicherweise der Gegenwart von einer anderen Entität gesteuert wurde.
Wie für In C#, how to check if a TCP port is available? denke ich, das Original-Poster ist nicht wirklich sicher, ob er über Client oder Server spricht, so auch die Antworten sind entweder über Client will Verbindung oder Server will auf einem Port zu hören.
JaredPars Antwort ist richtig (mehr als diese!), Obwohl manchmal vielleicht unbequem.
Wenn Sie sicher sind, dass kein anderer Server den Port greifen Sie gerade überprüft (oder ist es egal, für gelegentliche Fehler), können Sie versuchen (von http://www.codeproject.com/Tips/268108/Find-the-open-port-on-a-machine-using-Csharp?msg=4176410#xx4176410xx, ähnlich wie https://stackoverflow.com/a/570461/586754):
public static int GetOpenPort(int startPort = 2555)
{
int portStartIndex = startPort;
int count = 99;
IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties();
IPEndPoint[] tcpEndPoints = properties.GetActiveTcpListeners();
List<int> usedPorts = tcpEndPoints.Select(p => p.Port).ToList<int>();
int unusedPort = 0;
unusedPort = Enumerable.Range(portStartIndex, 99).Where(port => !usedPorts.Contains(port)).FirstOrDefault();
return unusedPort;
}
- 1. Ermitteln, ob iOS webapp verwendet
- 2. Ermitteln, ob eine MATLAB GUI edittextbox verwendet wird
- 3. Ermitteln, ob eine Datei in Perl unter Windows verwendet wird
- 4. Ermitteln des Ports, der von Webbrowser verwendet wird
- 5. Ermitteln, welcher Webserver verwendet wird
- 6. Ermitteln, ob der Benutzer die Zurück-Schaltfläche verwendet hat
- 7. überprüfen, ob Port 80 verweigert wird?
- 8. Ermitteln, ob ein Programm im Debug-Modus ausgeführt wird
- 9. Welcher Port wird mit socket.io verwendet?
- 10. RAD - JVM-Debug-Port wird verwendet
- 11. Parse Server "Port wird bereits verwendet"
- 12. org.springframework.boot.context.embedded.PortInUseException: Port 80 wird bereits verwendet
- 13. Ermitteln, ob die Maus gezogen wird AppKit
- 14. Ermitteln, ob eine Wordzelle zusammengeführt wird
- 15. Flex: Ermitteln, ob eine Komponente angezeigt wird
- 16. Ermitteln, ob ein UIViewController modal präsentiert wird
- 17. Ermitteln, ob auf der Site HTTPS ausgeführt wird
- 18. Ermitteln, ob ein Django-Feld von der Vorlage benötigt wird
- 19. Ermitteln, ob der Servlet-Container ausgeführt wird Eclipse Jetty
- 20. Ermitteln des aktuellen Controllers, der für Kohana verwendet wird
- 21. Überprüfen Sie, ob der serielle Port überwacht
- 22. Ermitteln, ob der Benutzer Zeichen für Zeichen eingibt oder ob mehr als 1 Zeichen eingegeben wird
- 23. Ermitteln, ob jemand Nginx, Apache oder Lighttpd verwendet
- 24. Ermitteln, ob der Pfad gültig ist Javascript
- 25. Ermitteln der Azure Web- oder Worker-Rolle? (Alternate: Ermitteln, ob in IIS ausgeführt wird?)
- 26. Wie erkennt man, ob unter Linux bereits ein Port in C verwendet wird?
- 27. Bestimmen Sie, ob ein TCP/IP-Port bereits unter Windows verwendet wird.
- 28. WebRTC: Ermitteln, welcher TURN-Server in PeerConnection verwendet wird
- 29. Ermitteln, ob Thread schläft
- 30. Ermitteln, ob ein Controller in einer verschachtelten Route in Rails 3 verwendet wird