Клиент-серверное приложение, написанное на C ++, Windows 2012 R2
У меня есть набор приложений, написанных на C ++, которые посылают пульс через TCP-порт 9190, используя Winsock. До сих пор мы не поддерживали брандмауэр Windows, но теперь пытаемся заставить приложение работать с включенным брандмауэром. Я сталкиваюсь с проблемой неожиданного сброса соединения при включении брандмауэра на удаленном хосте. Когда я наблюдал в wireshark, я заметил, что удаленный хост отправляет RST для разрыва соединения, как показано на снимках ниже:
Обе стороны соединения имеют правила брандмауэра, разрешающие TCP-соединения на ВСЕХ портах. Я даже пытался добавить правила ALLOW ALL (все протоколы, порты, приложения) на оба брандмауэра, но все еще сталкивался с той же проблемой. Это соединение работает абсолютно нормально, если удаленный брандмауэр выключен. Состояние локального брандмауэра (на стороне клиента) не влияет. Я исключил любые другие факторы, такие как стороннее программное обеспечение защиты служб Windows и т. Д. Я также попытался добавить разрешение разрешить все правила как для входящих, так и для исходящих правил. Я также удалил ВСЕ, кроме своих правил, и все еще сталкиваюсь с той же проблемой.
В коде вызов connect () работает нормально, но send () возвращает ошибку 10061 (не удалось установить соединение, поскольку целевой компьютер активно отказал в этом.). Telnet соединение с этими портами также работает нормально и может отправлять / получать данные !!
У нас также есть много другого сетевого трафика между этими приложениями, такого как вызовы DCOM, данные UDP, эхо-запросы ICMP и т. Д., Которые, кажется, работают нормально.
Кто-нибудь видит здесь очевидные проблемы? Что еще я должен посмотреть. Любые вклады / помощь будут оценены. Спасибо,