当前位置:我的异常网» 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)...相关推荐

  1. Java黑皮书课后题第7章:*7.1(指定等级)编写一个程序读入学生成绩,得到最高分best,然后根据下面的规则给出等级值。程序提示用户输入学生总数,然后提示用户输入所有的分数,最后显示等级给出结论

    7.1(指定等级)编写一个程序读入学生成绩,得到最高分best,然后根据下面的规则给出等级值 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 *7.1(指定等级)编写一个程序读入学生成 ...

  2. linux启动一个进程吗,你知道,当你在 Linux 上启动一个进程时会发生什么嘛?

    原标题:你知道,当你在 Linux 上启动一个进程时会发生什么嘛? 本文是关于 fork 和 exec 是如何在 Unix 上工作的.你或许已经知道,也有人还不知道.几年前当我了解到这些时,我惊叹不已 ...

  3. python xy打不开、没有关联程序_绿茶XP系统下exe文件打不开提示没有关联程序如何解决...

    为了提升电脑运行速度,很多朋友都会对xp系统进行优化.不过,一位绿茶xp系统用户反馈自己在优化过程中误操作修改了注册表参数,导致一打开exe文件就提示"文件没有与之关联的程序来执行" ...

  4. c 语言程序复杂,你见过或写过的最复杂的 C 语言程序是?

    原标题:你见过或写过的最复杂的 C 语言程序是? (点击上方公号,可快速关注) 来自:伯乐小组 链接:http://group.jobbole.com/9907/ 来自 Quora 的一个讨论帖,题主 ...

  5. Linux编写一个C程序HelloWorld

    环境 需要文本编辑器和编译器,文本编辑器用linux(我用的centos7)自带的vi,编译器用gcc(GNU C Compiler/GNU Compiler Collection) 安装gcc,查看 ...

  6. linux编写一个博客脚本,Linux 脚本编写基础 - 凌度 - 博客园.pdf

    Linux 脚本编写基础 - 凌度 - 博客园 Linux 脚本编写基础 1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始 (必须放在文件的第一行): # ...

  7. linux+创建一个v文件共享,win10与Ubantu双系统:Linux下开启FTP服务器与创建无线热点(实现文件共享)...

    如何在win系统下使用filelizza这个软件搭建FTP服务器,然后建立一个无线局域网,让平板终端连接以后,访问电脑硬盘的文件. 如果是只在win7环境下,一切都很简单,按照上文提供的教程就可以实现 ...

  8. 编写一个shell脚本,使其能够备份/etc目录下所有文件,并且备份的文件名需要自动生成日期,即产生后缀名形如.backup_20210624的文件。

    一.实现过程: 目录 一.实现过程: 二.验证结果: 1.在当前目录下,使用vi或者touch命令新建一个shell脚本文件,并且使用chmod命令添加权限(我这里添加的是最高权限),如图: 2.使用 ...

  9. java编写一个动物类_Java编程 实现类的继承与多态 写一个动物类。成员变量为动物的种类,成员方法是动物叫声。...

    感觉写得够详细了,如果不懂M我abstract class Animal { //动物的种类用变量n表示 String n; //动物的声音用变量s表示 String s; //在这里声明了一个抽象方 ...

最新文章

  1. SPI的原理以及Verilog HDL实现
  2. 机器学习笔记 时间序列预测(最基本的方法【benchmark】)
  3. Android targetSdkVersion详解
  4. int转string的3种方法
  5. mysql 常用小工具包_mssql+mysql小工具(无需环境依赖)-mysql数据库批量实体CS类导出工具下载v3.0免费版-西西软件下载...
  6. leecode_二叉树中序遍历
  7. 各类木材强度_凯狄解析各类抽芯铆钉的工作原理
  8. Could not connect to SMTP host: smtp.163.com, port: 25;阿里云 ECS
  9. 力扣112. 路径总和(JavaScript)
  10. 阶段3 1.Mybatis_11.Mybatis的缓存_3 mybatis一对一实现延迟加载
  11. SRS:软件需求规格说明书
  12. 图片短链接生成器在线
  13. 安卓逆向小案例——阿里系某电影票务APP加密参数还原-Unidbg篇
  14. git ssh配置文件 服务器_Linux 环境 搭建Git 服务器,并且修改SSH端口使用
  15. 想要把邮件转换成PDF?整起!
  16. Mac M1 使用conda安装jupyter notebook
  17. 全世界国家的数据库sql
  18. MTL框架:模型、权重与融合公式
  19. java java java java
  20. Python--初识庐山真面目

热门文章

  1. 如何在Spring Boot App中集成H2数据库
  2. Spring Security和自定义密码编码
  3. idea 不能及时编译_您是否能及时编译?
  4. 数据聚合Spring Data MongoDB:嵌套结果
  5. 我们如何意外地将Hibernate的JDBC流量增加了一倍
  6. 存根类 测试代码 java_嘲弄和存根–了解Mockito的测试双打
  7. 设计模式的Java 8 Lambda表达式–命令设计模式
  8. 在Java8中包装设计模式
  9. RabbitMQ –使用Spring集成Java DSL串行处理消息
  10. 使用Spring Form标签探索Spring Controller