Сокеты: не приходит FD_CONNECT

Тема в разделе "WASM.NETWORKS", создана пользователем NULL, 2 окт 2005.

  1. NULL

    NULL New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2004
    Сообщения:
    1
    значит так-с



    у меня есть поток в котором я пытаюсь установить соединение
    Код (Text):
    1.  
    2. srec.socket = socket(AF_INET, SOCK_STREAM, 0);
    3. int async = WSAAsyncSelect(srec.socket, params->settings->hWnd, WM_SOCKET, FD_CONNECT | FD_CLOSE);
    4.                    
    5. // выбираем хост на который слать
    6. if (++cur_host == hosts.end())
    7.   cur_host = hosts.begin();
    8.  
    9. sockaddr_in dest_addr;
    10. dest_addr.sin_family = AF_INET;
    11. dest_addr.sin_port   = (*cur_host).port;
    12. memcpy(&dest_addr.sin_addr, &(*cur_host).ip, sizeof((*cur_host).ip));
    13.  
    14. if (connect(srec.socket, (sockaddr*)&dest_addr, sizeof(dest_addr)) == 0)
    15.   srec.state = ssConnecting;
    16. else
    17. {
    18.     int error = WSAGetLastError();
    19.     if (error == WSAEWOULDBLOCK)
    20.       srec.state = ssConnecting;
    21. }
    22.  




    т.е. я создаю сокет, перевожу его в неблокирующий режим, подписавшись на сообщения об установлении и разрыве соединения

    connect нормально выполняется (с ошибкой WSAEWOULDBLOCK)

    дальше должно выполнится соединение и окно с дескриптором params->settings->hWnd должно получить сообщение WM_SOCKET



    а фактически коннект выполняется (сматрю сниффером), а сообщения окну не приходит!



    отправка и оконная функция находятся в разных потоках одного процесса



    Уже и не знаю в чем может быть проблема
     
  2. Sickle

    Sickle New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    181
    а разве это сообщение не слушающий сокет должен отсылать?