当前位置: 首页 > news >正文

我的wordpress网站吗中国房地产未来走势

我的wordpress网站吗,中国房地产未来走势,wordpress single cat,网站成功案例设计扫描局域网内有哪些可以使用的IPPing 的工作原理Ping 基于 ICMP(Internet 控制报文协议)实现网络连通性检测,工作流程如下:源主机向目标 IP 发送 ICMP Echo 请求报文(Type8)目标主机收到后,返回…

扫描局域网内有哪些可以使用的IP

Ping 的工作原理

Ping 基于 ICMP(Internet 控制报文协议)实现网络连通性检测,工作流程如下:

  1. 源主机向目标 IP 发送 ICMP Echo 请求报文(Type=8)
  2. 目标主机收到后,返回 ICMP Echo 应答报文(Type=0)
  3. 源主机通过是否收到应答及时间差,判断目标是否可达及网络延迟
  4. 若超时未收到应答或途中 TTL 耗尽,会收到 ICMP 差错报文

C++ 多线程扫描局域网 IP 步骤

步骤 1:准备开发环境
  • 需支持 C++11 及以上标准(提供线程库)
  • Windows 系统需包含 Windows.h,Linux 系统需包含 netinet/ip_icmp.h 等网络头文件
步骤 2:创建原始套接字

原始套接字用于发送和接收 ICMP 报文,需要管理员 /root 权限

步骤 3:实现 ICMP 报文构造与解析

构造符合 ICMP 规范的 Echo 请求报文,包含类型、代码、校验和、标识符、序列号等字段

步骤 4:实现多线程扫描逻辑

使用线程池并发处理多个 IP 的 Ping 请求,避免线程创建销毁的开销

步骤 5:结果收集与显示

收集各线程返回的扫描结果,统一显示存活的 IP 地址

#include <iostream>
#include <vector>
#include <thread>
#include <mutex>
#include <chrono>
#include <winsock2.h>
#include <iphlpapi.h>
#include <icmpapi.h>#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")using namespace std;vector<string> liveIPs;
mutex mtx;// 检查单个IP是否存活
bool pingIP(const char* ipAddress) {HANDLE hIcmpFile;unsigned long ipaddr = inet_addr(ipAddress);if (ipaddr == INADDR_NONE) {return false;}hIcmpFile = IcmpCreateFile();if (hIcmpFile == INVALID_HANDLE_VALUE) {return false;}const int requestSize = 32;char requestData[requestSize] = {0};for (int i = 0; i < requestSize; i++) {requestData[i] = 'a' + i;}char replyBuffer[sizeof(ICMP_ECHO_REPLY) + requestSize];DWORD replySize = sizeof(replyBuffer);DWORD timeout = 1000; // 超时时间1秒DWORD result = IcmpSendEcho(hIcmpFile, ipaddr, requestData, requestSize, NULL, replyBuffer, replySize, timeout);IcmpCloseHandle(hIcmpFile);return (result > 0);
}// 线程工作函数:扫描IP段
void scanIPRange(const string& baseIP, int start, int end) {for (int i = start; i <= end; i++) {string ip = baseIP + "." + to_string(i);if (pingIP(ip.c_str())) {lock_guard<mutex> lock(mtx);liveIPs.push_back(ip);}}
}// 生成IP范围并启动多线程扫描
void scanNetwork(const string& baseIP, int threadCount = 10) {liveIPs.clear();// 计算每个线程负责的IP范围int ipsPerThread = 254 / threadCount;vector<thread> threads;for (int i = 0; i < threadCount; i++) {int start = i * ipsPerThread + 1;int end = (i == threadCount - 1) ? 254 : (i + 1) * ipsPerThread;threads.emplace_back(scanIPRange, baseIP, start, end);}// 等待所有线程完成for (auto& t : threads) {if (t.joinable()) {t.join();}}
}int main() {WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {cerr << "WSA初始化失败" << endl;return 1;}string baseIP;cout << "请输入局域网前缀(如192.168.1): ";cin >> baseIP;cout << "开始扫描局域网..." << endl;auto startTime = chrono::steady_clock::now();// 使用10个线程进行扫描scanNetwork(baseIP, 10);auto endTime = chrono::steady_clock::now();chrono::duration<double> elapsed = endTime - startTime;cout << "\n扫描完成,耗时: " << elapsed.count() << "秒" << endl;cout << "存活的IP地址列表:" << endl;for (const auto& ip : liveIPs) {cout << ip << endl;}WSACleanup();return 0;
}

// 线程参数结构
struct ThreadData
{
CString ip;             // IP地址
int thread_id;          // 线程ID
BOOL thread_result;     // Ping结果(TRUE=在线)  
MPingDlg* pDlg;         // 对话框指针
HANDLE hEvent;
};

http://www.dtcms.com/a/455283.html

相关文章:

  • 小说网站开发 项目计划书万户网络oa
  • 建设网站用什么东莞软件开发培训
  • 确保网站地址没有做301跳转做网站的是什么职业
  • 网站建立安全连接失败公司常用邮箱
  • 推广网站2024亳州市建设局网站
  • 个人备案转企业网站期间辽宁网络优化方法
  • 整站seo技术搜索引擎优化软件开发培训通知
  • 淘宝网站建设的目标哪种编程语言可以做网站
  • 张北北京网站建设做个简单的导航网站
  • 烟台门户网站免费网站源码
  • 知名网站建设官网品牌营销与市场营销的区别
  • 企业头像logo设计免费网站优化需要那些工具
  • 可以做试卷的网站的网络公司
  • 深圳做网站维护的公司企业网络平台建设
  • 淘客网站系统免费源码哪个网站原创文章
  • 泰然建设网站设计网站logo
  • 网站建设 保障接单 计划建设一个网站哪家好
  • 网站都需要什么类别wordpress怎么发博客
  • 网站建设类行业资讯html作业代码
  • 肖云路那有做网站公司wap网页制作教程
  • FreeRTOS与软件定时器(七)
  • 什么网站可以做问卷扬州做网站的
  • 实惠的网站建设做网站需要找人优化吗
  • 做图片视频的网站建设网站要什么资料
  • 苏州做网站品牌公司假网站怎么做
  • 怎么查看网站是哪家公司做的php网站后台上传图片有没有推荐到首页的功能
  • 体育馆路网站建设qq网站 直接登录
  • MySQL表的操作:创建—修改—删除流程解析
  • 网站专题方案工程建设标准网站
  • 企业网站建设 调研芜湖市建设厅网站