c+포트 스 캔 프로그램 구현 사례
포트 스 캔 의 원 리 는 간단 합 니 다.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~~
", Ip, CurrPort);
closesocket(s);
}
else {
printf("%s:%d Failed
", Ip, CurrPort);
}
}
printf("Cost time:%f second
", 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, 0, &m1);
_beginthread(beginThreadFunc1, 0, &m2);
getchar();
return 0;
}
필요 합 니 다\#include이상 의 c+포트 스 캔 프로그램의 실현 사례 는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
scrapy 내장 중간부품의 순서를 상세히 설명하다1. 내장 다운로드기 중간부품 순서 2. 내장 파충류 중간부품 순서 3. scrapy가 내장된 settings scrapy 내장 중간부품의 순서를 상세히 설명하는 이 글은 여기까지 소개합니다. 더 많은 scrapy ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.