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

c++ 端口扫描程序实现案例

第一、原理端口扫描的原理很简单就是建立socket通信切换不通端口通过connect函数如果成功则代表端口开发者否则端口关闭。所有需要多socket程序熟悉本内容是在window环境下的第二、单线程实现方式12345678910111213141516171819202122232425262728293031323334353637383940414243444546// PortScanf.cpp : 定义控制台应用程序的入口点。//#define WIN32_LEAN_AND_MEAN#include stdafx.h#include WinSock2.h#pragma comment(lib, Ws2_32)intscant(char*Ip,intStartPort,intEndPort){WSADATA wsa;SOCKET s;structsockaddr_in server;intCurrPort;//当前端口intret;WSAStartup(MAKEWORD(2, 2), wsa);//使用winsock函数之前必须用WSAStartup函数来装入并初始化动态连接库server.sin_family AF_INET;//指定地址格式在winsock中只能使用AF_INETserver.sin_addr.s_addr inet_addr(Ip);//指定被扫描的IP地址for(CurrPort StartPort; CurrPort EndPort; CurrPort){s socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);server.sin_port htons(CurrPort);//指定被扫描IP地址的端口号ret connect(s, (structsockaddr *)server,sizeof(server));//连接if(0 ret)//判断连接是否成功{printf(%s:%d Success O(∩_∩)O~~\n, Ip, CurrPort);closesocket(s);}else{printf(%s:%d Failed\n, Ip, CurrPort);}}printf(Cost time:%f second\n, CostTime);//输出扫描过程中耗费的时间WSACleanup();//释放动态连接库并释放被创建的套接字return1;}intmain(){scant(127.0.0.1, 75, 100);return0;}第三、多线程实现方式由于单线程执行速度有些慢我们加入多线程运行12345678910111213141516171819202122232425262728typedefstruct_tagValue{intstart;intend;}PortNums;void_cdecl beginThreadFunc1(LPVOIDlpParam) {PortNums *pnInt (PortNums*)lpParam;scan(127.0.0.1, pnInt-start, pnInt-end);}inta(){PortNums m1;m1.start 70;m1.end 500;PortNums m2;m2.start 501;m2.end 1000;_beginthread(beginThreadFunc1, 0, m1);_beginthread(beginThreadFunc1, 0, m2);getchar();return0;}注意需要#includeprocess.h以上这篇c 端口扫描程序实现案例就是小编分享给大家的全部内容了
http://www.rkmt.cn/news/1295850.html

相关文章:

  • 国内卫浴十大品牌华艺卫浴 绿色科技引领健康卫浴新生态 - 速递信息
  • 基于RT-Thread Studio搭建瑞萨RA6M4开发环境全攻略
  • 计算机提示词长度控制:指定AI回答字数与详略
  • 2026年5月钢格栅厂家领军榜!五大标杆实力解码助力一站式选型采购 - 速递信息
  • 149.PyTorch+YOLOv8 实战|口罩检测全流程,含模型评估与 ONNX 导出
  • 基于发布订阅模式的Web实时通信框架hermes-for-web实践指南
  • mysql如何配置MySQL的连接保持_调整tcp_keepalive设置
  • 【NotebookLM+Stata+LaTeX三端协同】:经济学论文写作效率提升300%的私密工作流(附MIT经济系内部配置清单)
  • 华南师范大学校园网自动登录脚本逆向分析:从F12抓包到Python requests模拟POST请求全解析
  • 质量工具怎么快速学会? - 众智商学院职业教育
  • Mysql:索引与B+树
  • Noto Emoji字体终极指南:5步解决跨平台表情符号乱码问题
  • OpenAI关闭微调API,AI副业者的机会来了!
  • 闻达AI助手:本地化大语言模型平台的架构设计与应用实践
  • 终极免费音频编辑解决方案:告别昂贵软件,用Audacity实现专业级音频处理
  • Cadence 17.4出Gerber给嘉立创,解析失败?试试手动清理这个钻孔文件
  • 上海/北京/深圳 | Build with AI: 直击 Next 26,构建智能未来
  • 高效地下水模拟完全指南:使用Python和FloPy进行专业水文建模
  • 从Windows效率困境到指尖革命:Flow Launcher的智能工作流重塑指南
  • 湖北综合格斗俱乐部推荐:从“野蛮生长”到“专业进化”,你选对了吗? - 速递信息
  • 如何在PC上运行Switch游戏:Ryujinx开源模拟器的完整配置指南
  • 测绘新手避坑指南:用全站仪做闭合导线测量,从外业到内业计算全流程复盘(附原始数据)
  • 从网卡硬件到DPDK应用:一张图看懂RSS分流全链路与性能瓶颈排查
  • 2026年亲测必备:5款论文降AI工具,真实降低AI率不虚标! - 降AI实验室
  • 成都小程序定制服务优选 核心优势全解析 - 软件测评师
  • 中石油加油卡回收,那些躺在抽屉里的油卡,该醒醒了 - 京顺回收
  • SLAM_TOOLBOX实战:从零到一构建长期可用的2D地图
  • TPS65131模块实战:单电源生成正负双电压的工程指南
  • CircuitPython驱动NeoPixel与DotStar:从原理到炫彩动画实战
  • 边缘存储解决方案:边缘环境的数据存储