Running on windows 7,
using example code...
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

my "connect" function always immediately returns 0; even when not really connected to anything.
And then my recv function will sit for about 30 seconds then timeout.
I tried specifying every WinSoc ver on WSAStartup from 1.0 to 2.2, all have same effect.

I'm using MinGW, No MFC. Is there something else I should be doing?

Code:
    //request to startup use for sockets version 2.0
    WSADATA wsaData;
    int ret = WSAStartup(WSA_VER,&wsaData);
    if(ret!=0)
    {
        TRACE("\nWSA ERROR: %s",ErrorToStr(WSAGetLastError()).data());
        return FALSE;
    }

    //create a TCP socket
    SOCKET soc = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if(soc == INVALID_SOCKET)
    {
       TRACE("\nWSA ERROR: %s",ErrorToStr(WSAGetLastError()).data());
       WSACleanup();
       return FALSE;
    }

    //check if we have a host name or IP address
    BOOL bIsHost = isalpha(sServ[0]);

    //resolve IP if needed
    LPHOSTENT hostEntry = {0};
    if(bIsHost)//resolve hostname to IP address list
    {
        hostEntry = gethostbyname(sServ);
        //display IP address in debugger screen (just display the first IP in the list of returned IP's)
        TRACE("\nRESOLVED IP: %s",  (char*)inet_ntoa(*(in_addr*)hostEntry->h_addr_list[0])  );
        TRACE("\nRESOLVED HOSTNAME: %s",  (char*)hostEntry->h_name  );
        if(!hostEntry)
        {
           TRACE("\nWSA ERROR: %s",ErrorToStr(WSAGetLastError()).data());
           WSACleanup();
           return FALSE;
        }
    }

    //connection data
    sockaddr_in con;
    con.sin_family = AF_INET;
    if(bIsHost)
    { con.sin_addr.s_addr = *(u_long*)hostEntry->h_addr_list[0]; }//use the IP address we resolved
    else
    { con.sin_addr.s_addr = inet_addr(sServ); }//an IP was passed in, so just use that
    con.sin_port = htons(iPort);

    //try to connect
    ret = connect(soc,(SOCKADDR*)&con,sizeof(con));
    if(ret != 0)
    {
       TRACE("\nWSA ERROR: %s",ErrorToStr(WSAGetLastError()).data());
       WSACleanup();
       return FALSE;
    }
    TRACE("\n Connect Returned: %d, socket value = %d",ret,soc);