C 언어로 IP 주소 쿼리 시스템을 구현하는 방법
C 언어로 IP 주소 쿼리 시스템을 구현하는 방법
참고 내용은 다음과 같습니다: void?GetNameAndIp()
{
struct?hostent?* 호스트;
struct?in_addr?*ptr;
DWORD?dwScope?=?RESOURCE_CONTEXT;
NETRESOURCE?*NetResource?=? NULL;
HANDLE?hEnum;
WNetOpenEnum(dwScope,?NULL,?NULL,?NULL,?&hEnum);
WSADATA?wsaData; p>
WSAStartup(MAKEWORD(1,?1),?&wsaData);
if?(hEnum)
{
DWORD?Count? =?0xFFFFFFFF;
DWORD?BufferSize?=?10240;
LPVOID?Buffer?=?new?char[10240];
WNetEnumResource(hEnum, ?&Count,?Buffer ,?&BufferSize);
NetResource?=?(NETRESOURCE*)Buffer;
char?szHostName[200];
for? (unsigned?int? i?=?0;?i?
{
if?(NetResource ->dwUsage?= =?RESOURCEUSAGE_CONTAINER?&&?NetResource->dwType?==?RESOURCETYPE_ANY)
{
if?(NetResource->lpRemoteName)
{
CString?strFullName?=?NetResource->lpRemoteName;
if?(0?==?strFullName.Left(2).Compare(_T("\\\ \")))
strFullName?=?strFullName.Right(strFullName.GetLength()?-?2);
gethostname(szHostName,?strlen(szHostName));
USES_CONVERSION;
char?*pchar?=?T2A(strFullName);
host?=?gethostbyname(pchar);
if?(host? ==?NULL)?continue;
ptr?=?(struct?in_addr?*)?host->h_addr_list[0];
string?str ?=?"" ;
for?(int?n?=?0;?n<4;?n++)
{
CString?addr ;
if?(n?>?0)
{
str?+=?".";
}
int?value?=?(unsigned?int)((unsi
gned?char*)host->h_addr_list[0])[n];
char?p[20];
sprintf(p,?"%d",?value );
str.append(p);
}
std::cout?<<"IP:"<h_name<
}
}
}
삭제 ?Buffer;
WNetCloseEnum(hEnum);
}
WSACleanup();
}