프로그래밍/C, C++

도메인 이름만으로 서버 접속하기

Dev-Drake 2019. 8. 9. 09:33
반응형

char __fastcall TMainFrm::ConnectServer(void)
{
    struct hostent *pHostEnt;
    unsigned char   IP[4];
    AnsiString      Addr;

    if(WSAStartup(MAKEWORD(2,2), &m_WsaData) != 0){
        MsgBox("WSA Error");
        return FALSE;
    }

    g_ServSock = socket(PF_INET, SOCK_STREAM, 0);
    if(g_ServSock==INVALID_SOCKET){
        MsgBox("SOCKET Error");
        return FALSE;
    }

    //  도메인 이름으로 IP주소 알아오기
    pHostEnt = gethostbyname(SERVER_DOMAIN);
    memcpy(IP, pHostEnt->h_addr, 4);
    Addr.sprintf("%d.%d.%d.%d", IP[0], IP[1], IP[2], IP[3]);


    memset(&m_ServAddr, 0, sizeof(m_ServAddr));
    m_ServAddr.sin_family           = AF_INET;
    m_ServAddr.sin_addr.s_addr  = inet_addr(Addr.c_str());
    m_ServAddr.sin_port              = htons(SERVER_PORT);

 

    if(connect(g_ServSock, (SOCKADDR*)&m_ServAddr, sizeof(m_ServAddr))==SOCKET_ERROR)   {
        MsgBox("CONNECT Error");
        return FALSE;
    }

    return  TRUE;
}

 

반응형