Не ясно, где проблема на самом деле. Это сеть? Это серверное приложение? Это серверный компьютер / оборудование / брандмауэр и т.д.? Это клиентский компьютер?
Некоторое устранение неполадок должно иметь место, чтобы знать, где даже искать.
Вот что я бы сделал. Когда приложение работает правильно, на сервере откройте административную командную строку (щелкните правой кнопкой мыши, запустите от имени администратора). Используйте команду netstat -abn | more
и просмотрите содержимое. Вам будет предоставлен список активных и прослушиваемых сетевых подключений, отсортированный по протоколу и номеру порта. Вы должны быть в состоянии идентифицировать серверное приложение, прослушивающее данный порт, и оно должно показывать имя исполняемого файла. Если какие-либо активные соединения установлены, вы также увидите эти "установленные" соединения в списке. Теперь вы знаете, как это выглядит, когда работает правильно.
Теперь я бы добавил клиента Telnet для простого тестирования. Клиент Telnet - это функция Windows, которую вы можете добавить. Он отлично подходит для тестирования простых TCP-соединений. Когда все работает, откройте командную строку на сервере и используйте команду telnet localhost <port>
- замените номер порта, который слушает ваше приложение. Вы должны получить хотя бы пустой экран, указывающий, что соединение было успешным. Если это не удастся, через некоторое время вы получите тайм-аут. Очевидно, что он не должен превышать тайм-аут, или у вас определенно есть что-то, блокирующее соединения (даже если кажется, что клиенты работают сейчас).
Теперь, когда возникает проблема, вы можете использовать как команду netstat, так и команду telnet, чтобы определить причину проблемы. Во-первых, используйте netstat, чтобы убедиться, что приложение все еще прослушивает порт, который он должен прослушивать. Если это не так, проблема в вашем приложении или в том, как оно взаимодействует с ОС.
Если приложение все еще правильно слушает, вы можете использовать telnet с локального хоста и с удаленных компьютеров Windows, чтобы увидеть, где заблокировано соединение. То есть, если вы можете успешно подключиться к серверу по локальной сети на сервере, вы знаете, что приложение и сетевой стек работают хорошо, и что-то на сервере или в сети блокирует соединение (брандмауэр, программное обеспечение безопасности и т. д.). Вы также можете попробовать telnet <local ip> <port>
вместо использования localhost
. Если одно работает, а другое нет, это еще один индикатор того, что блокирует соединение на сервере, или слушатель может быть настроен неправильно.
Я бы в поисках программного обеспечения безопасности, которое установлено на сервере или клиенте. Особенно "тяжелые", такие как McAfee или Norton. Эти продукты являются причиной многих разбитых надежд и мечтаний. Не просто отключить их и вычеркнуть их из списка. Удалите их - это единственный способ быть уверенным, и даже тогда иногда они ломают вещи и нуждаются в большей уборке.
Без дальнейших подробных подробностей о вашей сетевой инфраструктуре и сервере / приложении дальнейших ответов нет. Все дело в устранении неполадок и устранении проблем.