欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c++ 端口掃描程序?qū)崿F(xiàn)案例

 更新時間:2017年05月16日 08:08:59   投稿:jingxian  
下面小編就為大家?guī)硪黄猚++ 端口掃描程序?qū)崿F(xiàn)案例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

第一、原理

端口掃描的原理很簡單,就是建立socket通信,切換不通端口,通過connect函數(shù),如果成功則代表端口開發(fā)者,否則端口關(guān)閉。

所有需要多socket程序熟悉,本內(nèi)容是在window環(huán)境下的

第二、單線程實現(xiàn)方式

// PortScanf.cpp : 定義控制臺應(yīng)用程序的入口點。
//
#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;  //當(dāng)前端口
  int ret;
 
  WSAStartup(MAKEWORD(2, 2), &wsa);  //使用winsock函數(shù)之前,必須用WSAStartup函數(shù)來裝入并初始化動態(tài)連接庫
 
  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", Ip, CurrPort);
    }
  } 
  printf("Cost time:%f second\n", CostTime); //輸出掃描過程中耗費的時間
  WSACleanup();  //釋放動態(tài)連接庫并釋放被創(chuàng)建的套接字
  return 1;
}
 
int main()
{
  scant("127.0.0.1", 75, 100);
   
  return 0;
}

第三、多線程實現(xiàn)方式

由于單線程執(zhí)行速度有些慢,我們加入多線程運行,

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++ 端口掃描程序?qū)崿F(xiàn)案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言求2的n次方多種方法總結(jié)

    C語言求2的n次方多種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于C語言求2的n次方多種方法的相關(guān)資料,求2的N次冪是一個常用的功能,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • 淺談C++反向迭代器的設(shè)計

    淺談C++反向迭代器的設(shè)計

    本文主要介紹了淺談C++反向迭代器的設(shè)計,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C語言的結(jié)構(gòu)體你了解嗎

    C語言的結(jié)構(gòu)體你了解嗎

    這篇文章主要為大家詳細(xì)介紹了C語言的結(jié)構(gòu)體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 求32位機器上unsigned int的最大值及int的最大值的解決方法

    求32位機器上unsigned int的最大值及int的最大值的解決方法

    本篇文章是對求32位機器上unsigned int的最大值及int的最大值的解決方法進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言中無符號數(shù)和有符號數(shù)之間的運算

    C語言中無符號數(shù)和有符號數(shù)之間的運算

    C語言中有符號數(shù)和無符號數(shù)進行運算默認(rèn)會將有符號數(shù)看成無符號數(shù)進行運算,其中算術(shù)運算默認(rèn)返回?zé)o符號數(shù),邏輯運算當(dāng)然是返回0或1了。下面通過一個例子給大家分享C語言中無符號數(shù)和有符號數(shù)之間的運算,一起看看吧
    2017-09-09
  • C++實現(xiàn)打地鼠游戲設(shè)計

    C++實現(xiàn)打地鼠游戲設(shè)計

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)打地鼠游戲設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C語言使用深度優(yōu)先搜索算法解決迷宮問題(堆棧)

    C語言使用深度優(yōu)先搜索算法解決迷宮問題(堆棧)

    這篇文章主要介紹了C語言使用深度優(yōu)先搜索算法解決迷宮問題,涉及C語言堆棧的使用與深度優(yōu)先算法解決迷宮問題的相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • C++踩坑實戰(zhàn)之構(gòu)造和析構(gòu)函數(shù)

    C++踩坑實戰(zhàn)之構(gòu)造和析構(gòu)函數(shù)

    不論是構(gòu)造函數(shù),還是析構(gòu)函數(shù),都是C++、C#語言相對于其他語言而言特殊的地方,它是為了方便類中對象的初始化,這篇文章主要給大家介紹了關(guān)于C++踩坑實戰(zhàn)之構(gòu)造和析構(gòu)函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • C++?STL之string的模擬實現(xiàn)實例代碼

    C++?STL之string的模擬實現(xiàn)實例代碼

    C++中有命名空間的存在,我們只需把我們的代碼封到自定義的命名空間即可,下面這篇文章主要給大家介紹了關(guān)于C++?STL之string的模擬實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • C語言打印菱形實例詳解

    C語言打印菱形實例詳解

    這篇文章主要給大家介紹了關(guān)于C語言如何打印菱形的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論