CAsyncSocket, Connect & WSAEWOULDBLOCK
От: ptomaine  
Дата: 10.08.05 10:12
Оценка:
#include <iostream>
#include <string>
#include <afxsock.h>

class CMyAsyncSocket : public CAsyncSocket
{
public:
    bool connected;

    CMyAsyncSocket()
    {
        connected = false;
    }

    void OnConnect( int nErrorCode )
    {
        connected = true;
    }

};

int main()
{
    AfxSocketInit();
    CMyAsyncSocket sock;
    BOOL r = sock.Create( 0, SOCK_STREAM, FD_WRITE | FD_READ | FD_CONNECT , NULL );

    if(r) std::cout << "created" << std::endl;

    r = sock.Connect( "www.rambler.ru", 80 );
    if(!r)
    {
        if( GetLastError() == WSAEWOULDBLOCK  )
        {
            std::cout << "would block" << std::endl;
        }
    }

    while( !sock.connected ); //ждём соединения

    std::cout << "connected" << std::endl;
    return 1;
}


Соответственно, выводится:
created
would block


Далее программа ждёт. Почему не происходит соединение? Или он и не должно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.