Как получить конкретный сокет и закрыть его - PullRequest
1 голос
/ 13 марта 2009

Я хочу закрыть сокет, чтобы снова открыть его на том же порту, но у меня нет дескриптора на этом сокете.

Как я могу получить сокет, который прослушивает localhost: 873, чтобы закрыть его?

Ответы [ 3 ]

2 голосов
/ 13 марта 2009

Без драйвера ядра это невозможно. В Windows не разрешено захватывать дескриптор сокета в другом процессе и активно его закрывать.

1 голос
/ 13 марта 2009

Только тот процесс, которому принадлежит сокет, может закрыть его, поэтому все, что вы можете попробовать, это завершить процесс, которому принадлежит сокет.

В командной строке вы можете найти идентификатор процесса, используя определенный сокет, используя опцию -o для netstat. Например:

netstat -noa | findstr LISTENING

Я не знаю, как вы делаете это программно в .NET, хотя.

0 голосов
/ 13 марта 2009

Вы можете расследовать SO_REUSEADDR .

...