Как подключиться к определенному порту на компьютере с Windows 8 Consumer Preview? - PullRequest
2 голосов
/ 03 апреля 2012

Я пытался устранить неполадки программы, которая «прослушивает» порт 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 и не попадает в перехват, поэтому я предполагаю, что он запущен нормально? *

1 Ответ

1 голос
/ 03 апреля 2012

Предполагая, что перечисленные вами команды возвращают действительные данные, а 192.168.100.93 - это IP-адрес вашего компьютера (вместо этого вы можете использовать 127.0.0.1), ваш клиент не сможет подключиться, так как ничего нетпрослушивание порта.

Использует ли ваше прослушивающее приложение TcpClient для прослушивания порта?Если нет, то проблема в приложении для прослушивания, поэтому, пожалуйста, покажите этот код.

...