编写一个端口扫描程序,能够显示某个IP或某段IP的计算机的某一个或某些端口是否正在工作。

来源:百度知道 编辑:UC知道 时间:2024/05/08 19:49:02
工作过程如下:
(1) 设定好一定的端口扫描范围;
(2) 设定每个端口扫描的次数,因为有可能有的端口一次扫描可能不通;
(3) 创建socket,通过socket的connect方法来连接远程IP地址以及对应的端口;
(4) 如果返回false,表示端口没有开放,否则端口开放。

//Author: kernelhuang
//Time: 08.11.03
//multithread port scan

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <stdio.h>
#include <unistd.h>
#include <semaphore.h>
#include <pthread.h>
#include <time.h>
#include <sys/types.h>

using namespace std;

const int NTHREAD=5;
const int NPROCESS=300;
sem_t sem_kernelhuang;
unsigned int tok=0;
pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;

struct iport{
char ip[20];
char port[8];
};

int sem_initialize(void)
{
sem_init(&sem_kernelhuang,tok,NTHREAD);
return 0;
}

int print_help()
{
cout<<"Help for this:"<<endl;
cout<<" ./kernelhuang_scanport iplist portrange"<<endl;
exit(0);