도메인 이름만으로 서버 접속하기
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;
}