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

c++ 端口扫描程序实现案例,第1张

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

第一、原理

端口扫描的原理很简单,就是建立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 Failed\n",CurrPort);    }  }   printf("Cost time:%f second\n",CostTime); //输出扫描过程中耗费的时间  WSACleanup();  //释放动态连接库并释放被创建的套接字  return 1;} int main(){  scant("127.0.0.1",75,100);     return 0;}

第三、多线程实现方式

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

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,&m1);  _beginthread(beginThreadFunc1,&m2);    getchar();  return 0;}

注意需要#include<process.h>

@H_502_41@

以上这篇c++ 端口扫描程序实现案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的c++ 端口扫描程序实现案例全部内容,希望文章能够帮你解决c++ 端口扫描程序实现案例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1245063.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存