linux编写一个简单的端口扫描程序,小弟我在linux下写了个简单的多线程端口扫描程序,运行时出现有关问题,请问一下(2)...
当前位置:我的异常网» Linux/Unix » 小弟我在linux下写了个简单的多线程端口扫描程序,
小弟我在linux下写了个简单的多线程端口扫描程序,运行时出现有关问题,请问一下(2)
www.myexceptions.net 网友分享于:2013-02-26 浏览:23次
usleep(1000);
printf( "\nThread ending....\n ");
while(g_nThreadNum> 0)
{
usleep(1);
printf( " =|=\t%d threads \r ",g_nThreadNum);
}
printf( "threadnum = %d ", g_nThreadNum);
printf( "\nThread ended!\n ");
}
int main(int argc, char **argv)
{
int i, j, nStartPort, nEndPort,nThread, ret, index;
int nPort[1000];
pthread_t tid;
/* 当前的线程数量 */
g_nThreadNum = 0;
host = argv[1];
nThread = atoi(argv[3]);
sscanf(argv[2], "%d-%d ", &nStartPort, &nEndPort);
printf( "nStartPort = %d\n ", nStartPort);
printf( "nEndPort = %d\n ", nEndPort);
/* 最大线程数 */
g_nMaxThread = (nThread > = 1000)? 1000 : nThread;
timeout.tv_usec = 0;
if (g_nMaxThread > 500)
timeout.tv_sec = 2;
else
timeout.tv_sec = 1;
printf( "MaxThread = %d\n ", g_nMaxThread);
printf( "ThreadNum = %d\n ", g_nThreadNum);
index = 0;
for (i = nStartPort; i <= nEndPort; i++, index++)
nPort[index] = i;
for (j = 0; j < index; j++)
{
g_nThreadNum++;
/* 若超过最大的线程数,程序休眠等待线程的释放 */
while (g_nThreadNum > = g_nMaxThread)
{
usleep(10);
}
ret = pthread_create(&tid, NULL, (void *)thread_scan_port, &nPort[j]);
if (0 != ret)
{
perror( "\npthread_create ");
exit(1);
}
}
//printf( "ThreadNum = %d\n ", g_nThreadNum);
WaitThreadEnd();
return 0;
}
编译: gcc -lpthread PortScanner.c -o PortScanner
运行:./PortScanner 192.168.2.1 1-1000 500
注:192.168.2.1 要扫描的地址 1-1000 端口范围 500 指定可以产生的最大线程数
当端口和线程比较大时运行就出问题了
------解决方案--------------------
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MAX_PORT 4000
#define MAX_THREAD 100
/* basename(argv[0]). netBSD,linux and gnu libc all define it. */
extern char *__progname;
/* globals */
int port_num,thread_num=100;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int main(int argc,char **argv)
{
void *thread_main(void *);
pthread_t tid;
#ifndef HAVE__PROGNAME
__progname = argv[0];
#endif
printf( "----kf_701 scan tool--------- ");
文章评论
linux编写一个简单的端口扫描程序,小弟我在linux下写了个简单的多线程端口扫描程序,运行时出现有关问题,请问一下(2)...相关推荐
- Java黑皮书课后题第7章:*7.1(指定等级)编写一个程序读入学生成绩,得到最高分best,然后根据下面的规则给出等级值。程序提示用户输入学生总数,然后提示用户输入所有的分数,最后显示等级给出结论
7.1(指定等级)编写一个程序读入学生成绩,得到最高分best,然后根据下面的规则给出等级值 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 *7.1(指定等级)编写一个程序读入学生成 ...
- linux启动一个进程吗,你知道,当你在 Linux 上启动一个进程时会发生什么嘛?
原标题:你知道,当你在 Linux 上启动一个进程时会发生什么嘛? 本文是关于 fork 和 exec 是如何在 Unix 上工作的.你或许已经知道,也有人还不知道.几年前当我了解到这些时,我惊叹不已 ...
- python xy打不开、没有关联程序_绿茶XP系统下exe文件打不开提示没有关联程序如何解决...
为了提升电脑运行速度,很多朋友都会对xp系统进行优化.不过,一位绿茶xp系统用户反馈自己在优化过程中误操作修改了注册表参数,导致一打开exe文件就提示"文件没有与之关联的程序来执行" ...
- c 语言程序复杂,你见过或写过的最复杂的 C 语言程序是?
原标题:你见过或写过的最复杂的 C 语言程序是? (点击上方公号,可快速关注) 来自:伯乐小组 链接:http://group.jobbole.com/9907/ 来自 Quora 的一个讨论帖,题主 ...
- Linux编写一个C程序HelloWorld
环境 需要文本编辑器和编译器,文本编辑器用linux(我用的centos7)自带的vi,编译器用gcc(GNU C Compiler/GNU Compiler Collection) 安装gcc,查看 ...
- linux编写一个博客脚本,Linux 脚本编写基础 - 凌度 - 博客园.pdf
Linux 脚本编写基础 - 凌度 - 博客园 Linux 脚本编写基础 1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始 (必须放在文件的第一行): # ...
- linux+创建一个v文件共享,win10与Ubantu双系统:Linux下开启FTP服务器与创建无线热点(实现文件共享)...
如何在win系统下使用filelizza这个软件搭建FTP服务器,然后建立一个无线局域网,让平板终端连接以后,访问电脑硬盘的文件. 如果是只在win7环境下,一切都很简单,按照上文提供的教程就可以实现 ...
- 编写一个shell脚本,使其能够备份/etc目录下所有文件,并且备份的文件名需要自动生成日期,即产生后缀名形如.backup_20210624的文件。
一.实现过程: 目录 一.实现过程: 二.验证结果: 1.在当前目录下,使用vi或者touch命令新建一个shell脚本文件,并且使用chmod命令添加权限(我这里添加的是最高权限),如图: 2.使用 ...
- java编写一个动物类_Java编程 实现类的继承与多态 写一个动物类。成员变量为动物的种类,成员方法是动物叫声。...
感觉写得够详细了,如果不懂M我abstract class Animal { //动物的种类用变量n表示 String n; //动物的声音用变量s表示 String s; //在这里声明了一个抽象方 ...
最新文章
- SPI的原理以及Verilog HDL实现
- 机器学习笔记 时间序列预测(最基本的方法【benchmark】)
- Android targetSdkVersion详解
- int转string的3种方法
- mysql 常用小工具包_mssql+mysql小工具(无需环境依赖)-mysql数据库批量实体CS类导出工具下载v3.0免费版-西西软件下载...
- leecode_二叉树中序遍历
- 各类木材强度_凯狄解析各类抽芯铆钉的工作原理
- Could not connect to SMTP host: smtp.163.com, port: 25;阿里云 ECS
- 力扣112. 路径总和(JavaScript)
- 阶段3 1.Mybatis_11.Mybatis的缓存_3 mybatis一对一实现延迟加载
- SRS:软件需求规格说明书
- 图片短链接生成器在线
- 安卓逆向小案例——阿里系某电影票务APP加密参数还原-Unidbg篇
- git ssh配置文件 服务器_Linux 环境 搭建Git 服务器,并且修改SSH端口使用
- 想要把邮件转换成PDF?整起!
- Mac M1 使用conda安装jupyter notebook
- 全世界国家的数据库sql
- MTL框架:模型、权重与融合公式
- java java java java
- Python--初识庐山真面目