资源简介
C++获取所有局域网可用IP,使用PING的方式简单易懂,但缺点就是时间消耗比较多,给新手看的,大神请无视 vs2010编译
代码片段和文件信息
// C++ping.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
string inttostring(int n)
{
std::stringstream strRet;
strRet << n;
return strRet.str();
}
bool isIP(const char* str)
{
int i(0);
size_t len = strlen(str);
while (len > 0)
{
if ( *str < ‘0‘ || *str>‘9‘)
{
if (*str !=‘.‘)
return false;
i ++;
}
str++;
len--;
}
if (i == 3)
return true;
return false;
}
// [9/22/2014 gin]
int pingit(string strStartIPstring strEndIP)
{
try
{
int pos1 = strStartIP.find_last_of(“.“) + 1;
string str1 = strStartIP.substr(pos1);
string strIP1 = strStartIP.substr(0pos1);
int pos2 = strEndIP.find_last_of(“.“) + 1;
string str2 = strEndIP.substr(pos2);
string strIP2 = strEndIP.substr(0pos2);
if (strIP1 != strIP2)
{
cout << “错误:输入IP不在同一段“ << endl;
return 0;
}
int count = 0;
int s1 = atoi(str1.c_str());
int s2 = atoi(str2.c_str());
cout << “正在ping所有指定IP地址,这也许会持续较长时间,请耐心等候……“ << endl;
vector vecIP;
for (int i = s1;i < s2 ; i++)
{
string ip = strIP1 + inttostring(i);
string conv = “ping “ + ip;
conv += “ -n 1“;
int q = system(conv.c_str());
if (q == 0)
{
count ++;
vecIP.push_back(ip);
}
}
cout << “可用IP列表:“ << endl;
for (int i = 0; i < vecIP.size(); i++)
{
cout << vecIP[i] << endl;
}
return count;
}
catch (...)
{
return 0;
}
}
int _tmain(int argc _TCHAR* argv[])
{
// char *s = new char[16];
string s1s2;
while(1)
{
cout<< “请输入需要ping的IP段:“< cout<< “(格式:x.x.x.x且起始IP与结束IP前三位必须相同)“< cout<< “起始IP:“ ;
cin >> s1;
cout<< “结束IP:“ ;
cin >> s2;
if (!isIP(s1.c_str()) || !isIP(s2.c_str()))
{
cout << “错误:IP格式有误“ << endl;
}
else
break;
}
cout << “共“ << pingit(s1s2) << “个可用IP“ << endl;
system(“pause“);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1958 2014-09-22 16:50 C++ping\C++ping\C++ping.cpp
文件 4364 2014-09-22 15:47 C++ping\C++ping\C++ping.vcxproj
文件 1311 2014-09-22 15:47 C++ping\C++ping\C++ping.vcxproj.filters
文件 143 2014-09-22 15:47 C++ping\C++ping\C++ping.vcxproj.user
文件 1553 2014-09-22 15:47 C++ping\C++ping\ReadMe.txt
文件 212 2014-09-22 15:47 C++ping\C++ping\stdafx.cpp
文件 330 2014-09-22 16:35 C++ping\C++ping\stdafx.h
文件 236 2014-09-22 15:47 C++ping\C++ping\targetver.h
文件 888 2014-09-22 15:47 C++ping\C++ping.sln
..A..H. 14848 2014-09-22 16:51 C++ping\C++ping.suo
文件 101888 2014-09-22 16:50 C++ping\Debug\C++ping.exe
文件 683168 2014-09-22 16:50 C++ping\Debug\C++ping.ilk
文件 1133568 2014-09-22 16:50 C++ping\Debug\C++ping.pdb
目录 0 2014-09-22 16:52 C++ping\C++ping
目录 0 2014-09-22 16:42 C++ping\Debug
目录 0 2014-09-22 16:52 C++ping
----------- --------- ---------- ----- ----
1944467 16
- 上一篇:16位 CRC 校验代码
- 下一篇:linux c语言写的坦克大战小游戏
评论
共有 条评论