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

—-想了解c++ 端口扫描程序实现案例分享的全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

第一、原理

端口扫描的原理很简单,就是建立socket通信,切换不通端口,通过connect函数,如果成功则代表端口开发者,否则端口关闭。

所有需要多socket程序熟悉,本内容是在window环境下的

第二、单线程实现方式

  // PortScanf.cpp : 定义控制台应用程序的入口点。  //  #define WIN32_LEAN_AND_MEAN  #include "stdafx.h"  #include <WinSock2.h>  #pragma comment(lib, "Ws2_32")  int scant(char *Ip, int StartPort, int EndPort)  {     WSADATA wsa;    SOCKET s;    struct sockaddr_in server;       int CurrPort;  //当前端口    int ret;       WSAStartup(MAKEWORD(2, 2), &wsa);  //使用winsock函数之前,必须用WSAStartup函数来装入并初始化动态连接库       server.sin_family = AF_INET;  //指定地址格式,在winsock中只能使用AF_INET    server.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, (struct sockaddr *)&server, sizeof(server)); //连接         if (0 == ret) //判断连接是否成功      {        printf("%s:%d Success O(∩_∩)O~~n", Ip, CurrPort);        closesocket(s);      }      else {        printf("%s:%d Failedn", Ip, CurrPort);      }    }     printf("Cost time:%f secondn", CostTime); //输出扫描过程中耗费的时间    WSACleanup();  //释放动态连接库并释放被创建的套接字    return 1;  }     int main()  {    scant("127.0.0.1", 75, 100);         return 0;  }

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

第三、多线程实现方式

由于单线程执行速度有些慢,我们加入多线程运行,

  typedef struct _tagValue  {    int start;    int end;  }PortNums;     void _cdecl beginThreadFunc1(LPVOID lpParam) {    PortNums *pnInt = (PortNums*)lpParam;    scan("127.0.0.1", pnInt->start, pnInt->end);  }     int a()  {    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();    return 0;  }

注意需要#include<process.h>

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

以上这篇c++ 端口扫描程序实现案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/487942.html

(0)
上一篇 2020年11月12日
下一篇 2020年11月12日

精彩推荐