使用C++语言实现同时对多个IP进行ping包测试
时间: 2023-12-28 17:03:58 浏览: 171
要同时对多个IP进行ping包测试,可以使用多线程来实现。以下是使用C++语言实现同时对多个IP进行ping包测试的示例代码:
```c++
#include <iostream>
#include <thread>
#include <chrono>
#include <vector>
#include <string>
#include <mutex>
using namespace std;
mutex mtx;
void pingIP(string ip) {
string pingCmd = "ping -n 1 " + ip; // Windows下的ping命令
// string pingCmd = "ping -c 1 " + ip; // Linux下的ping命令
mtx.lock();
cout << "Ping " << ip << "..." << endl;
mtx.unlock();
int ret = system(pingCmd.c_str()); // 执行ping命令
if (ret == 0) {
mtx.lock();
cout << ip << " is reachable!" << endl;
mtx.unlock();
}
else {
mtx.lock();
cout << ip << " is unreachable!" << endl;
mtx.unlock();
}
}
int main() {
vector<string> ipList = {"192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4", "192.168.0.5"};
vector<thread> threads;
for (string ip : ipList) {
threads.emplace_back(pingIP, ip); // 创建线程并启动
}
for (thread& t : threads) {
t.join(); // 等待所有线程结束
}
return 0;
}
```
上述代码中,使用`vector<string>`存储要ping的IP地址列表,使用`vector<thread>`存储线程列表。然后遍历IP地址列表,创建线程并启动,使用`join()`方法等待所有线程结束。在每个线程中执行ping命令,并将结果输出到控制台。注意,在Windows下使用`ping -n 1`命令,而在Linux下使用`ping -c 1`命令。同时使用`mutex`来保证多个线程之间的输出不会混乱。
阅读全文