2009-03-20 4 views

Antwort

2

Best I der Versuch finden konnte, war, bis Sie eine offene Option ...

http://forums.devshed.com/net-development-87/c-how-to-determine-if-a-port-is-in-use-371148.html

public static bool TryPortNumber(int port) 
    { 
     try 
     { 

      using (var client = new System.Net.Sockets.TcpClient(new System.Net.IPEndPoint(System.Net.IPAddress.Any, port))) 
      { 
       return true; 
      } 
     } 
     catch (System.Net.Sockets.SocketException error) 
     { 
      if (error.SocketErrorCode == System.Net.Sockets.SocketError.AddressAlreadyInUse /* check this is the one you get */) 
       return false; 
      /* unexpected error that we DON'T have handling for here */ 
      throw error; 
     } 
    } 
1

Warum sollte der Benutzer nicht auswählen, auf welchem ​​Port der Dienst gehostet werden soll? Fügen Sie beispielsweise der Konfigurationsdatei Ihrer Anwendung einen Wert hinzu, der an Ihren ServiceHost übergeben wird. Sie können auch versuchen, eine Portnummer nach dem Zufallsprinzip zu generieren und testen, ob sie offen ist, und dann den Vorgang wiederholen, wenn eine andere Anwendung sie bereits verwendet.

+1

Eine beliebige Anzahl von Gründen. Er kann einen oder mehrere dynamisch generierte Dienste starten, die nicht im Voraus bekannt sind und daher nicht individuell konfiguriert werden können. –

Verwandte Themen