DWORD Err;

PIP_ADAPTER_INFO pAdapterInfo, pAdapt;

DWORD AdapterInfoSize = 0;

PIP_ADDR_STRING pAddrStr;



//버퍼 사이즈 알아오기

if ((Err = GetAdaptersInfo(NULL, &AdapterInfoSize)) != 0)

if (Err != ERROR_BUFFER_OVERFLOW)

return FALSE;



//버퍼 동적 할당

if ((pAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[AdapterInfoSize]) == NULL)

return FALSE;



//어댑터 정보 얻어오기

if ((Err = GetAdaptersInfo(pAdapterInfo, &AdapterInfoSize)) != 0)

return FALSE;



pAdapt = pAdapterInfo;



int i=0;

while (pAdapt) -->이반복문에서 랜카드 갯수 만큼 루프를 돌면서 주소값을 얻어옵니다.

{

pAddrStr=&(pAdapt->IpAddressList);

g_sClientinternalsockaddr.bySockaddrcount=(i+1);



while(pAddrStr)

{

g_sClientinternalsockaddr.asockaddr[i].sin_addr.S_un.S_addr=inet_addr(pAddrStr->IpAddress.String);

pAddrStr = pAddrStr->Next;

}

pAdapt = pAdapt->Next;

i++;

}

delete pAdapterInfo;

pAdapterInfo=NULL;





혹은





// 로컬 어드레스를 세트한다.

char recvline[300];

gethostname(recvline, 200);



// 이름으로부터 IP를 얻어낸다.

struct hostent *pHostEnt = gethostbyname(recvline);



if (pHostEnt != NULL)

{

localAddress.Format("%u.%u.%u.%u",

0xff & pHostEnt->h_addr_list[0][0],

0xff & pHostEnt->h_addr_list[0][1],

0xff & pHostEnt->h_addr_list[0][2],

0xff & pHostEnt->h_addr_list[0][3]

);

} else

localAddress = _T("");

+ Recent posts