자기자신 IP알아내기(로칼컴퓨터) | |||
| |||
여러가지 방법이 올라와 있지만 제 컴에는 이넘 밖에 되지 않았습니다. Test 컴파일러 : VC++6.0 , VC++.NET #include <windows.h> #include <winsock.h> #include <stdio.h> #pragma comment(lib, "ws2_32.lib") CString CLogToNmdDlg::GetMyIp(void) { CString strHostName=""; CString strLocalIP=""; char szHostName[512] = { 0, }; DWORD dwIP = inet_addr("1.2.3.4"); PBYTE pIP = (PBYTE)(&dwIP); DWORD dwTest = dwIP; printf("%03d %03d %03d %03d ", pIP[0], pIP[1], pIP[2], pIP[3]); printf("%03d %03d %03d %03d " , (dwTest >> 24) & 0x000000FF , (dwTest >> 16) & 0x000000FF , (dwTest >> 8) & 0x000000FF , dwTest & 0x000000FF ); if((dwTest & 0x000000FF) != pIP[4]) //printf("당신의 시스템은 '호스트 바이트 오더'를 사용합니다 "); AfxMessageBox("당신의 시스템은 '호스트 바이트 오더'를 사용합니다 "); else //printf("당신의 시스템은 '네트워크 바이트 오더'를 사용합니다 "); AfxMessageBox("당신의 시스템은 '네트워크 바이트 오더'를 사용합니다 "); GetMyNetworkInfo(&dwIP, szHostName, 512); //printf("당신의 호스트 네임 : %s ", szHostName); strHostName.Format("당신의 호스트 네임 : %s", szHostName); //printf("당신의 아이피 주소 : %d.%d.%d.%d ", pIP[0], pIP[1], pIP[2], pIP[3]); strLocalIP.Format("당신의 아이피 주소 : %d.%d.%d.%d", pIP[0], pIP[1], pIP[2], pIP[3]); //AfxMessageBox(strLocalIP); return strLocalIP; } BOOL CLogToNmdDlg::GetMyNetworkInfo(DWORD* pdwIP, char* szHostName, int nHostNameLength) { // 인자확인 if(!pdwIP || !szHostName || (0 >= nHostNameLength)) return false; // WSAStartup() 실행. WSADATA wsaData; WORD wVersion = MAKEWORD(1, 1); if(WSAStartup(wVersion, &wsaData) == 0) { // 버전확인. if(wsaData.wVersion >= wVersion) { // 나의 호스트 네임 알아오기. if((gethostname(szHostName, nHostNameLength)) == 0) { // 나의 호스트 상세성보 알아 오기(IP알아오기) HOSTENT *HostEnt = gethostbyname(szHostName); if(HostEnt) { (*pdwIP) = (*(DWORD*)HostEnt->h_addr); sprintf(szHostName, HostEnt->h_addr + 4); } } } // WSACleanup() 실행. WSACleanup(); return false; } return false; } Tags: MFC WIN32 윈도우즈 | |||
| |||
| |||
Login for comment |
OTHER POSTS IN THE SAME CATEGORY 스크린세이버 동작 못하게 막아주기 |