значит так-с у меня есть поток в котором я пытаюсь установить соединение Код (Text): srec.socket = socket(AF_INET, SOCK_STREAM, 0); int async = WSAAsyncSelect(srec.socket, params->settings->hWnd, WM_SOCKET, FD_CONNECT | FD_CLOSE); // выбираем хост на который слать if (++cur_host == hosts.end()) cur_host = hosts.begin(); sockaddr_in dest_addr; dest_addr.sin_family = AF_INET; dest_addr.sin_port = (*cur_host).port; memcpy(&dest_addr.sin_addr, &(*cur_host).ip, sizeof((*cur_host).ip)); if (connect(srec.socket, (sockaddr*)&dest_addr, sizeof(dest_addr)) == 0) srec.state = ssConnecting; else { int error = WSAGetLastError(); if (error == WSAEWOULDBLOCK) srec.state = ssConnecting; } т.е. я создаю сокет, перевожу его в неблокирующий режим, подписавшись на сообщения об установлении и разрыве соединения connect нормально выполняется (с ошибкой WSAEWOULDBLOCK) дальше должно выполнится соединение и окно с дескриптором params->settings->hWnd должно получить сообщение WM_SOCKET а фактически коннект выполняется (сматрю сниффером), а сообщения окну не приходит! отправка и оконная функция находятся в разных потоках одного процесса Уже и не знаю в чем может быть проблема