|
^^...
즐빌하세요 !
AnsiString getLocalIP(int iSeq=0)
{
char cszHostName[MAX_PATH];
PHOSTENT lpHostent = NULL;
struct sockaddr_in addr;
AnsiString szLocalIP = "0.0.0.0";
TStringList* pIPList = new TStringList();
DWORD dwRet = 0;
WORD wVersionRequested = MAKEWORD( 2, 0 );
WSADATA wsaData;
dwRet = WSAStartup( wVersionRequested, &wsaData );
if( dwRet != 0 )
{
dwRet = WSAGetLastError();
return szLocalIP;
}
try
{
dwRet = gethostname( cszHostName, sizeof(cszHostName) );
if( dwRet != 0 )
{
dwRet = WSAGetLastError();
return szLocalIP;
}
if( dwRet == 0 )
{
lpHostent = gethostbyname(cszHostName);
if( lpHostent != NULL )
{
for( int i = 0; (lpHostent->h_addr_list[i] != NULL); i++ )
{
memcpy( &(addr.sin_addr), lpHostent->h_addr_list[i], lpHostent->h_length );
pIPList->Add( inet_ntoa(addr.sin_addr) );
}
if( pIPList->Count == 0 )
{
return szLocalIP;
}
if( (pIPList->Count <= iSeq) || (0 == iSeq) )
{
szLocalIP = pIPList->Strings[0];
return szLocalIP;
}
szLocalIP = pIPList->Strings[iSeq];
return szLocalIP;
}
}
}
__finally
{
delete pIPList;
dwRet = WSACleanup();
if( dwRet != 0 )
{
}
}
return szLocalIP;
}
초보자 님이 쓰신 글 :
: 만약 자기 컴퓨터와 인터넷모뎀이 다이렉트로 연결되어 있는 상태라면
:
: 인터넷모뎀으로부터 아이피주소를 받기에
:
: 랜카드 아이피 주소가
:
: 220.71.2.3으로 되어 있다고 하면요.
:
: 그 주소를 출력하는 법좀 알려주시면 감사하겠습니다.
:
: 만약 사설아이피로 공유기에 연결 되어 있다면
:
: 192.168.0.1 이런식으로 정해져 있다면
:
: 192.168.0.1이 출력 되어야 하겠죠.
:
: 혹시 아시는분 있으시면 답변해주시면 감사하겠습니다.
|