도메인으로 IP 구하기
도메인 globaldino.tistory.com
nslookup 테스트
C++ 코드
#include <stdio.h>
#include <WinSock2.h>
#include <ws2tcpip.h>
#pragma comment(lib, "Ws2_32.lib")
BOOL DomainToIP(PCWSTR domain, PIN_ADDR addr)
{
PADDRINFOW pAddrInfo;
PSOCKADDR_IN sockAddr;
if (GetAddrInfoW(domain, L"0", NULL, &pAddrInfo) != 0)
return FALSE;
sockAddr = (PSOCKADDR_IN)pAddrInfo->ai_addr;
*addr = sockAddr->sin_addr;
FreeAddrInfoW(pAddrInfo);
return TRUE;
}
int main()
{
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
wprintf_s(L"WSAStartup error\n");
return 1;
}
IN_ADDR inAddr;
if (!DomainToIP(L"globaldino.tistory.com", &inAddr))
{
wprintf_s(L"err DomainToIP (%d)", WSAGetLastError());
return 1;
}
WCHAR buf[16];
InetNtopW(AF_INET, &inAddr.s_addr, buf, 16);
wprintf_s(L"%s\n", buf);
WSACleanup();
return 0;
}
실행결과
하나의 도메인에 여러개의 아이피가 있는 경우가 있다
naver.com nslookup 테스트
여러개의 IP 출력
C++ 코드
#include <stdio.h>
#include <WinSock2.h>
#include <ws2tcpip.h>
#pragma comment(lib, "Ws2_32.lib")
BOOL DomainToIPs(PCWSTR domain, PIN_ADDR addr, int addrSize, int* count)
{
PADDRINFOW pAddrInfo;
PSOCKADDR_IN sockAddr;
if (GetAddrInfoW(domain, L"0", NULL, &pAddrInfo) != 0)
return FALSE;
int idx = 0;
while (pAddrInfo != NULL)
{
sockAddr = (PSOCKADDR_IN)pAddrInfo->ai_addr;
if (idx < addrSize)
{
addr[idx] = sockAddr->sin_addr;
++idx;
}
++(*count);
pAddrInfo = pAddrInfo->ai_next;
}
FreeAddrInfoW(pAddrInfo);
return TRUE;
}
int main()
{
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
wprintf_s(L"errcode[%d] WSAStartup\n", WSAGetLastError());
return 1;
}
IN_ADDR inAddr[5];
int addrCount = 0;
if (!DomainToIPs(L"naver.com", inAddr, 5, &addrCount))
{
wprintf_s(L"errcode[%d] DomainToIP\n", WSAGetLastError());
return 1;
}
if (addrCount > 5)
addrCount = 5;
for (int i = 0; i < addrCount; i++)
{
WCHAR buf[16];
InetNtopW(AF_INET, &inAddr[i].s_addr, buf, 16);
wprintf_s(L"%s\n", buf);
}
WSACleanup();
return 0;
}
실행결과
IP를 저장할 배열을 만들어서 테스트 해 봤다
나중에 사용시에는 메모리 동적할당을 해서 사용해야겠지
반응형
'공부' 카테고리의 다른 글
TCP 에코서버 프로그래밍 (0) | 2020.10.10 |
---|---|
내 PC의 backlog 큐 개수 구하기 (2) | 2020.10.08 |
20201005 월요일 정리 (0) | 2020.10.06 |
IPv4 서브넷 연습 (0) | 2020.09.26 |
20200918 테스트 오답노트 (0) | 2020.09.18 |