C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[3175] Re:[질문]자신의 IP 주소를 알아내려면..???
이성렬 [] 4433 읽음    2000-03-23 00:00
정현 님이 쓰신 글 :
: 안녕하세요
: 오랜만에 오니 조금 바뀌었군요...^.^
:
: 오랜만에 와서 질문만하내요....
:
: 혹시 자신으 IP 어드래스를 알수있는 방법 아시나요...
: 부탁드립니다...

안녕하세요.. 아래 임펠리님의 답변이 있길래 찾아가기 귀찮으실까봐
퍼다 놓습니다. ^^

다음부턴 질문전에 한번 검색해 보시는것이 어떨지 ?? ^^;;

=======================================================================


임펠리테리입니다.

만약 실제로 네트워킹을 하는 프로그램이라면 간단히 소켓같은 컴퍼넌트를 하나 놓고
아무데나 접속하기만 하면 LocalAddress 프로퍼티에 현재 시스템의 IP값이 나옵니다.
하지만 이 방법은 꼭 접속을 해야만 IP를 알 수 있으므로, 항상 접속할 수 있는
서버가 있어야만 가능하겠죠.

winsock api를 이용한 방법이 있는데, 단 하나의 함수로 되어있는 간단한 방법은
아니고, 좀 복잡합니다. 다음 함수는 원래 어딘가에서 주워놨던 소스인데,
지금 테스트를 해보니 동작하지 않아서 제대로 동작하도록 약간 수정해서 보여드립니다.

#include

AnsiString __fastcall GetLocalIP(void)
{
    WSAData wsaData;
    if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0)
        return "";
    char slocal[256];
    if (gethostname(slocal, 256) == SOCKET_ERROR)
        return "";
    hostent *hos = gethostbyname(slocal);
    if(hos == NULL)
        return "";
    char *addr = *(hos->h_addr_list);
    AnsiString LocalIP = AnsiString((unsigned char)addr[0]) + '.'
                         + AnsiString((unsigned char)addr[1]) + '.'
                         + AnsiString((unsigned char)addr[2]) + '.'
                         + AnsiString((unsigned char)addr[3]);
    WSACleanup();
    return LocalIP;
}

그럼 참고하시길...

+ -

관련 글 리스트
3172 [질문]자신의 IP 주소를 알아내려면..??? 정현 3545 2000/02/23
3175     Re:[질문]자신의 IP 주소를 알아내려면..??? 이성렬 4433 2000/03/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.