У меня возникли проблемы с использованием функции Connect(). Раньше мой код полностью работал, но теперь я перешел в другую физическую сеть, и мой блокирующий вызов Connect() больше не работает и, кажется, просто зависает на неопределенный срок. Прием широковещательных сообщений через UDP по-прежнему работает нормально. Возвращаясь к старой сети, все снова работает нормально. Я не могу хоть убей понять, почему это работает в одной сети, а не в другой. Я проверил настройки брандмауэра, они верны. Что может происходить?
У меня используется заранее определенный порт, и я получаю адрес из широковещательной рассылки. Я использую receivefrom для получения трансляции и устанавливаю исходящий IP-адрес от нее
ret = recvfrom (bcast, bcast_read,sizeof(j4cDAC_broadcast),0,(sockaddr*)&from,&size);
to.sin_addr = from.sin_addr;
local.sin_addr.s_addr = inet_addr("0.0.0.0");
Тогда для TCP-соединения у меня есть
dac = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
// cout
Подробнее здесь: https://stackoverflow.com/questions/854 ... ot-another