|
안녕하세요 만해 입니다.
님께서 물어 보신 내용은
1232번에 나와 있는데요
제가 복사 해 봤습니다.
참고 하세요
임펠리테리입니다.
만약 실제로 네트워킹을 하는 프로그램이라면 간단히 소켓같은 컴퍼넌트를 하나 놓고
아무데나 접속하기만 하면 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;
}
여기 검색하면 많은 자료가 나온답니다.
|