|
헤더는 다음과 같이 ^^/...
#include <winsock2.h>
아참 사용법은
그냥 getLocalIP() 하면 첫번째 IP
만약 IP 가 다중으로 설정되어 잇는 경우
getLocalIP(1) 뭐 이런식으로 하시면됩니다.
황경록 님이 쓰신 글 :
: ^^...
:
: 즐빌하세요 !
:
: 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이 출력 되어야 하겠죠.
: :
: : 혹시 아시는분 있으시면 답변해주시면 감사하겠습니다.
|