2009-03-13 2 views

Antwort

2

Ohne einen Kernel-Treiber ist dies nicht möglich. Es ist in Windows nicht legal, ein Socket-Handle in einem anderen Prozess zu greifen und es proaktiv zu schließen.

+1

Dann wie können Sie es mit TCPView von Sysinternals tun? Zur Referenz: https://technet.microsoft.com/en-us/sysinternals/tcpview.aspx –

0

Sie könnten SO_REUSEADDR untersuchen.

+0

Dies ermöglicht mehrere Personen zu binden, aber Sie werden nicht in der Lage sein, den anderen Griff zu schließen. – JaredPar

1

Nur der Prozess, der den Socket besitzt, kann ihn schließen, also können Sie nur versuchen, den Prozess zu beenden, der den Socket besitzt.

Über die Befehlszeile können Sie die Prozess-ID des Prozesses mit einem bestimmten Socket unter Verwendung der -o-Option zu netstat finden. Zum Beispiel:

netstat -noa | findstr LISTENING 

Ich weiß nicht, wie Sie dies in .NET programmgesteuert tun.

+0

Die Anwendung besaß den Socket, aber der Gültigkeitsbereich wurde überschritten. – Malfist

+0

Nun, es muss geschlossen werden, und dann geht es außer Reichweite, aber nestat listet es immer noch als zuhörend auf – Malfist