Я пытался устранить неполадки программы, которая «прослушивает» порт 7751 для TCP-соединений.В Windows 7 и более ранних версиях иногда приходится включать порт в любом существующем программном обеспечении брандмауэра, но в остальном он работает нормально.
При тестировании в Windows 8 Consumer Preview мое приложение не может запустить службу прослушивания, и я получаю сообщение об ошибке: «Невозможно установить соединение, потому что целевая машина активно отказалась от него».
Я полностью отключил брандмауэр Windows, чтобы устранить его, но проблема по-прежнему существует (других программ безопасности нет).установлен на этом компьютере с Win8).
Чтобы устранить мою программу, я прошел апплет «Включение / выключение функций Windows» на панели управления и установил сервер и клиент Telnet.Я запустил службу Telnet (и сделал ее автоматической), а также добавил «Все» и себя непосредственно в локальную группу TelnetClients.
При запуске из командной строки:
telnet 192.168.100.93 7751
Мне сказали "Не удалось открыть соединение с хостом на порту 7751".
Я попытался сделать следующее:
netstat -an |find / i "listening"
Но порт 7751 не был указан (и программа, которая должна прослушивать его, работала).
Этот порт не заблокирован брандмауэром, так какон выключен
Я попытался telnet к другому порту, который был указан командой netstat, и он работает нормально.
Мое приложение подключается к порту с использованием следующего:
System.Net.Sockets.TcpClient tcpc = new TcpClient();
tcpc.Connect(server, port);
Но .Connect немедленно отправляет его на
catch(SocketException s)
, который сообщает: «Невозможно установить соединение, потому что целевой сервер активно отказал ему».Обратите внимание, что «целевой сервер» сам по себе.
Мое приложение - это обычное приложение Windows Forms в C #, которое построено Visual Studio 2005 (.net 2.0) на самой коробке Windows 8 ...
Что я делаю не так?
РЕДАКТИРОВАТЬ: В ответ на вопрос ниже, код, который начинает прослушивание:
private TcpListener tcpL;
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, Configuration.portNumber);
tcpL = new TcpListener(ipEndPoint);
tcpL.Start();
(ipAddressи Configuration.portNumber - это мои IP-адреса 192.168.100.93 и 7751 соответственно).
Этот код находится в пределах try / catch и не попадает в перехват, поэтому я предполагаю, что он запущен нормально? *