ip端口扫描

发布时间:2020-10-16 04:18:53

完整代码:// PortScan.h : main header file for the PORTSCAN application

//

#if !defined(AFX_PORTSCAN_H__20A7D450_8390_4726_9DC6_0616AAEDFE4B__INCLUDED_)

#define AFX_PORTSCAN_H__20A7D450_8390_4726_9DC6_0616AAEDFE4B__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__

#error include 'stdafx.h' before including this file for PCH

#endif

#include "resource.h" // main symbols

/////////////////////////////////////////////////////////////////////////////

// CPortScanApp:

// See PortScan.cpp for the implementation of this class

//

class CPortScanApp : public CWinApp

{

public:

CPortScanApp();

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CPortScanApp)

public:

virtual BOOL InitInstance();

//}}AFX_VIRTUAL

// Implementation

//{{AFX_MSG(CPortScanApp)

// NOTE - the ClassWizard will add and remove member functions here.

// DO NOT EDIT what you see in these blocks of generated code !

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_PORTSCAN_H__20A7D450_8390_4726_9DC6_0616AAEDFE4B__INCLUDED_)

// PortScan.cpp : Defines the class behaviors for the application.

//

#include "stdafx.h"

#include "PortScan.h"

#include "PortScanDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CPortScanApp

BEGIN_MESSAGE_MAP(CPortScanApp, CWinApp)

//{{AFX_MSG_MAP(CPortScanApp)

// NOTE - the ClassWizard will add and remove mapping macros here.

// DO NOT EDIT what you see in these blocks of generated code!

//}}AFX_MSG

ON_COMMAND(ID_HELP, CWinApp::OnHelp)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CPortScanApp construction

CPortScanApp::CPortScanApp()

{

// TODO: add construction code here,

// Place all significant initialization in InitInstance

}

/////////////////////////////////////////////////////////////////////////////

// The one and only CPortScanApp object

CPortScanApp theApp;

/////////////////////////////////////////////////////////////////////////////

// CPortScanApp initialization

BOOL CPortScanApp::InitInstance()

{

AfxEnableControlContainer();

// Standard initialization

// If you are not using these features and wish to reduce the size

// of your final executable, you should remove from the following

// the specific initialization routines you do not need.

#ifdef _AFXDLL

Enable3dControls(); // Call this when using MFC in a shared DLL

#else

Enable3dControlsStatic(); // Call this when linking to MFC statically

#endif

AfxSocketInit(NULL);

CPortScanDlg dlg;

m_pMainWnd = &dlg;

int nResponse = dlg.DoModal();

if (nResponse == IDOK)

{

// TODO: Place code here to handle when the dialog is

// dismissed with OK

}

else if (nResponse == IDCANCEL)

{

// TODO: Place code here to handle when the dialog is

// dismissed with Cancel

}

// Since the dialog has been closed, return FALSE so that we exit the

// application, rather than start the application's message pump.

return FALSE;

}

// PortScanDlg.h : header file

//

#if !defined(AFX_PORTSCANDLG_H__D76D9489_EB09_4865_85B5_BD58913E2EA4__INCLUDED_)

#define AFX_PORTSCANDLG_H__D76D9489_EB09_4865_85B5_BD58913E2EA4__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////

// CPortScanDlg dialog

class CPortScanDlg : public CDialog

{

// Construction

public:

SOCKET sock ;

BOOL m_ThreadExit; //是否退出线程序

SOCKADDR_IN addr;

CString str;

CString IP ;

void OnCancel();

CPortScanDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data

//{{AFX_DATA(CPortScanDlg)

enum { IDD = IDD_PORTSCAN_DIALOG };

CProgressCtrl m_Progress;

CListCtrl m_List;

CIPAddressCtrl m_IP;

CString m_From;

CString m_EndPort;

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CPortScanDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

HICON m_hIcon;

HANDLE m_hTread; //线程句柄

// Generated message map functions

//{{AFX_MSG(CPortScanDlg)

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

virtual void OnOK();

afx_msg void OnStart();

afx_msg void OnStop();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_PORTSCANDLG_H__D76D9489_EB09_4865_85B5_BD58913E2EA4__INCLUDED_)

// PortScanDlg.cpp : implementation file

//

#include "stdafx.h"

#include "PortScan.h"

#include "PortScanDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

enum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CPortScanDlg dialog

CPortScanDlg::CPortScanDlg(CWnd* pParent /*=NULL*/)

: CDialog(CPortScanDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CPortScanDlg)

m_From = _T("");

m_EndPort = _T("");

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);

}

void CPortScanDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CPortScanDlg)

DDX_Control(pDX, IDC_PROGRESS, m_Progress);

DDX_Control(pDX, IDC_LIST1, m_List);

DDX_Control(pDX, IDC_IPADDRESS1, m_IP);

DDX_Text(pDX, IDC_FROMPORT, m_From);

DDX_Text(pDX, IDC_TOPORT, m_EndPort);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CPortScanDlg, CDialog)

//{{AFX_MSG_MAP(CPortScanDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_START, OnStart)

ON_BN_CLICKED(IDC_STOP, OnStop)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CPortScanDlg message handlers

BOOL CPortScanDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

m_List.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_GRIDLINES|LVS_EX_TRACKSELECT);

m_List.InsertColumn(0,"端口号",LVCFMT_LEFT,120);

m_List.InsertColumn(1,"端口状态",LVCFMT_LEFT,120);

return TRUE; // return TRUE unless you set the focus to a control

}

void CPortScanDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

void CPortScanDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

// The system calls this to obtain the cursor to display while the user drags

// the minimized window.

HCURSOR CPortScanDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CPortScanDlg::OnOK()

{

}

DWORD WINAPI ThreadProc( LPVOID lpParameter )

{

CPortScanDlg* pDlg = (CPortScanDlg* )lpParameter;

memset(&pDlg->addr,0,sizeof(SOCKADDR_IN));

pDlg->addr.sin_addr.S_un.S_addr = inet_addr(pDlg->IP.GetBuffer(0));

pDlg->addr.sin_family =AF_INET ;

int from = atoi(pDlg->m_From);

int end = atoi(pDlg->m_EndPort);

for (int port = from; port

{

pDlg->m_Progress.SetPos(port);

pDlg->sock = socket(AF_INET,SOCK_STREAM,0);

pDlg->addr.sin_port = htons(port) ;

pDlg->str.Format("%d",port);

if (connect(pDlg->sock,(sockaddr*)&pDlg->addr,sizeof(SOCKADDR_IN))==0)

{

pDlg->m_List.InsertItem(0,"");

pDlg->m_List.SetItemText(0,0,pDlg->str);

pDlg->m_List.SetItemText(0,1,"占用");

}

else

{

pDlg->m_List.InsertItem(0,"");

pDlg->m_List.SetItemText(0,0,pDlg->str);

pDlg->m_List.SetItemText(0,1,"未用");

}

closesocket(pDlg->sock);

if (pDlg->m_ThreadExit)

{

ExitThread(0);

}

}

AfxMessageBox("扫描完成");

return 0;

}

void CPortScanDlg::OnStart()

{

UpdateData();

m_IP.GetWindowText(IP);

m_Progress.SetRange(0,80);

m_Progress.SetPos(0);

DWORD ThreadID;

m_ThreadExit = FALSE;

m_List.DeleteAllItems();

m_hTread = CreateThread(NULL,0,ThreadProc,(LPVOID)this,0,&ThreadID);

}

void CPortScanDlg::OnStop()

{

m_Progress.SetPos(0);

m_ThreadExit = TRUE;

closesocket(sock);

}

void CPortScanDlg::OnCancel()

{

CDialog::OnCancel();

}

//{{NO_DEPENDENCIES}}

// Microsoft Developer Studio generated include file.

// Used by PortScan.rc

//

#define IDM_ABOUTBOX 0x0010

#define IDD_ABOUTBOX 100

#define IDS_ABOUTBOX 101

#define IDD_PORTSCAN_DIALOG 102

#define IDR_MAINFRAME 128

#define IDI_ICON1 129

#define IDC_IPADDRESS1 1000

#define IDC_FROMPORT 1001

#define IDC_TOPORT 1002

#define IDC_LIST1 1003

#define IDC_START 1004

#define IDC_STOP 1005

#define IDC_PROGRESS 1006

// Next default values for new objects

//

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 130

#define _APS_NEXT_COMMAND_VALUE 32771

#define _APS_NEXT_CONTROL_VALUE 1007

#define _APS_NEXT_SYMED_VALUE 101

#endif

#endif

// stdafx.h : include file for standard system include files,

// or project specific include files that are used frequently, but

// are changed infrequently

//

#if !defined(AFX_STDAFX_H__DBC70BBB_7EF1_4F51_81AD_3B0F2552505B__INCLUDED_)

#define AFX_STDAFX_H__DBC70BBB_7EF1_4F51_81AD_3B0F2552505B__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers

#include // MFC core and standard components

#include // MFC extensions

#include // MFC Automation classes

#include // MFC support for Internet Explorer 4 Common Controls

#ifndef _AFX_NO_AFXCMN_SUPPORT

#include // MFC support for Windows Common Controls

#endif // _AFX_NO_AFXCMN_SUPPORT

#include

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__DBC70BBB_7EF1_4F51_81AD_3B0F2552505B__INCLUDED_)

// stdafx.cpp : source file that includes just the standard includes

// PortScan.pch will be the pre-compiled header

// stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"

ip端口扫描

相关推荐