Странности с Winsock и кодами ошибок

Есть клиент-сервер, при тестировании локально клиент и сервер все делают корректно. Запустил клиент на другой компьютер с другим IP-адресом, то же самое сделал и с сервером. Открыл перенаправление портов на роутере, открыл все порты в брандмауэре с обеих сторон. В итоге имею: клиент висит в положении SYN_SENT, а коды ошибок меняются c 10060 (timeout) на 10061 (connection refused), причем по-разному: может быть 3 кода 10060, а потом код 10061 или, например, 6 кодов 10061, а потом 10060 - явного закона никакого нет. Клиент и сервер на C++, win sdk ver 10.0.18362.0. Товарищи, есть мысли по этому поводу?


Ответы (1 шт):

Автор решения: Oleg Lylok

Немного запоздал с ответом, но отвечу на свой же вопрос :D. Оказалось, что сервер был привязан только к localhost. В структуре sockaddr_in есть структура sin_addr, где поле s_addr не было равно INADDR_ANY, что как раз и означает привязку ко ВСЕМ интерфейсам. Без данного значения до вашего сервера никто не достучится.

→ Ссылка