Мне известно, что уже есть подобный вопрос здесь .Тем не менее, единственный ответ не решает мою проблему.
Вот мой код:
TcpListener TcpListener = new TcpListener(localaddr: IPAddress.Any, port: 8080);
TcpListener.Start();
Выполнение TcpListener.Start();
дало мне эту ошибку:
System.Net.Sockets.SocketException: «Была сделана попытка получить доступ к сокету способом, запрещенным его разрешениями на доступ»
Я уже определил правило безопасности входящего трафика в моем брандмауэре, чтобы сделать порт 8080общедоступный (я знаю, что это обычно не рекомендуется, но я временно делаю это для целей тестирования):
Когда я запускаю netstat -o
, я могу проверить, что порт 8080 не уже имеетустановленное соединение.
Для чего это стоит, я запускаю TcpListener на виртуальной машине Azure.
Любые предложения о том, как я могу исправить SocketException
?
ОБНОВЛЕНИЕ:
Когда я запускаю netstat -o -n -a | findstr 0.0.0.0:8080
, я вижу следующий результат:
TCP 0.0.0.0: 8080 0.0.0.0:0 СЛУШАТЬ 4
Возможно, было выдано исключение SocketException, поскольку на порте 8080 уже прослушивается TcpListener
?
Я пытался прекратить существующееTcpListener
, запустив taskkill/pid 4 /F
(чтобы увидеть, будет ли SocketException
по-прежнему выбрасываться после его завершения), но не удалось:
ОШИБКА: процесс с PID 4 не можетбыть прекращено.Причина: доступ запрещен.