C语言IP地址查询系统如何实现? 5
1.实现一个交互系统,用户输入ip地址,显示对应的查询结果和查询执行时间;用户输入非法时,能提示用户。IP地址输入方式包括:A.a.b.c.d,其中a,b,c,d为0~2...
1. 实现一个交互系统,用户输入ip地址,显示对应的查询结果和查询执行时间;用户输入非法时,能提示用户。IP地址输入方式包括:A. a.b.c.d,其中a,b,c,d为0~255的整数,表示ip地址为a.b.c.d。这种方式下,显示对应ip的查询结果即可。B. a1.b1.c1.d1-a2.b2.c2.d2,其中a1,b1,c1,d1,a2,b2,c2,d2都是0~255的整数,表示从a1.b1.c1.d1到a2.b2.c2.d2的所有IP地址。这种方式下,显示对应的ip地址段对应的查询结果,如果存在多个记录,按照ip地址段顺序显示。数量过多时,注意分页显示。比如输入“219.235.224.1-219.236.1.1”,输出类似于:219.235.224.1-219.235.255.255中国 北京 北京市 联通219.236.0.0-219.236.1.1中国 北京 北京市 歌华query time : 1msC. 用户一次性输入多组a或者b的ip地址,批量处理这些数据。比如用户输入:“219.235.224.1 219.236.1.1”。输出类似于:219.235.224.1 中国 北京 北京市 联通219.236.1.1中国 北京 北京市 歌华(还有一个txt文件下面有图。用结构体还有文件读写如何解决?说一下具体思路也行,谢谢!txt文件里面有还几万条IP地址)
展开
3个回答
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
展开全部
C语言如何实现IP地址查询系统
参考如下:
void GetNameAndIp()
{
struct hostent *host;
struct in_addr *ptr;
DWORD dwScope = RESOURCE_CONTEXT;
NETRESOURCE *NetResource = NULL;
HANDLE hEnum;
WNetOpenEnum(dwScope, NULL, NULL, NULL, &hEnum);
WSADATA wsaData;
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 < BufferSize / sizeof(NETRESOURCE); i++, NetResource++)
{
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)((unsigned char*)host->h_addr_list[0])[n];
char p[20];
sprintf(p, "%d", value);
str.append(p);
}
std::cout <<"IP:"<< str <<" Name:"<<host->h_name<< std::endl;
}
}
}
delete Buffer;
WNetCloseEnum(hEnum);
}
WSACleanup();
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询