正好公司为了检测前台网络,力图收集有力证据与某CDN PK,所以随手写了一个群PING的程序。

写的内容比较简单,没有去特别追求线程效率,也没有去用LINUX 2.6+的殿堂级神器,以追求实现效率为主,一些参数大家可以自己调。

同事后来帮忙补了些日志处理,当然如果有兴趣的,还可以直接与AS3做SOCKET展示。

大致的源码如下:

#Linux REHL 6,x64,4C/32G,GCC

#define MAXTD 2

#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <stdlib.h>

char IP[230][30];
char *PINGI=NULL;
char *PINGC=NULL;
char *PINGS=NULL;

void *dmlog();

int main(int argc,char *argv[])
{
FILE *fp=NULL;
char *tmpstr=NULL;
char *ipraw;

pthread_t dm[230];
pthread_attr_t attr={0};
int t=0;

if(argc!=4)
{
printf("Not Enough Parameters!,GoodBye Exit(0)!\n");
printf("Or you can try example below:\n");
printf("ping 1 5 300 \n");
printf("Just 1 mens interval\n");
printf("5 means 5 packets\n");
printf("300 menas 300 packet size\n");
exit(0);
}
printf("%s\n",argv[1]);
printf("%s\n",argv[2]);
printf("%s\n",argv[3]);

fp=fopen("./ping.cnf", "r");
PINGI=(char*)malloc(sizeof(char)*10);
PINGC=(char*)malloc(sizeof(char)*2);
PINGS=(char*)malloc(sizeof(char)*10);
tmpstr=(char*)malloc(sizeof(char)*30);
ipraw=(char*)malloc(sizeof(char)*30);

strcpy(PINGI,argv[1]);
strcpy(PINGC,argv[2]);
strcpy(PINGS,argv[3]);

pthread_attr_init (&attr);
pthread_attr_setscope (&attr, PTHREAD_SCOPE_SYSTEM);
pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);

printf("Here Start Ping Test\n");
printf("Create Thread\n\n\n");

while(fgets(tmpstr,100,fp)!=NULL)
{
sscanf(tmpstr,"%[^\n]",ipraw);
if(strlen(ipraw)!=0)
{
strcpy(IP[t],ipraw);
pthread_create(&dm[t],NULL,(void*)dmlog,(void*)t);
printf("fun:%s,%d,%d,%s\n",ipraw,t,strlen(ipraw),IP[t]);
t++;
}
}

printf("Create Thread Done!\n");

while(1)
{
sleep(8);
printf("I've finished my job ,I wanna go...\n");
exit(0);
}

close(fp);
free(tmpstr);
free(ipraw);
free(PINGI);
free(PINGC);
free(PINGS);

}

void *dmlog(int ag)
{
char *text=NULL;
text=(char *)malloc(sizeof(char)*200);
strcpy(text,"ping -w 6 -i ");
strcat(text,PINGI);
strcat(text," -c ");
strcat(text,PINGC);
strcat(text," -s ");
strcat(text,PINGS);
strcat(text," ");
strcat(text,IP[ag]);
strcat(text," |tee ./logs/");
strcat(text,IP[ag]);
strcat(text,".log");
//printf("PID:%d,THID:%lu,TEXT:%s,ARG:%s\n",getpid(),(unsigned int)pthread_self(),text,IP[ag]);
//printf("%s\n",text);
system(text);
free(text);

}

转载于:https://www.cnblogs.com/zacard-orc/p/3466135.html

随记一个C的毫秒级群PING相关推荐

  1. php站群系统,ThinkPhp内核逐鹿泛目录站群系统 毫秒级加载速度 丰富的内容库搭配(价值8000元)...

    [温馨提示]源码包解压密码:www.youhutong.com 资源描述 ThinkPhp内核逐鹿泛目录站群系统 毫秒级加载速度 丰富的内容库搭配(价值8000元) 源码介绍: 逐鹿泛目录站群完整源码 ...

  2. C语言写一个10毫秒的延迟,C语言实现毫秒级定时

    由于手机电视项目接收数据出现问题(每帧数据后半部分有丢失,并且每隔一帧就会有几帧丢失),无法在手机上正常播放,原因很可能与SPI接口的速率(与接口驱动相关)与硬件速率不匹配造成的.为此,需要测量接收每 ...

  3. 百亿数据,毫秒级返回,如何构建?

    前言 大家好,我是坤哥,今天我想和大家聊一聊实时索引的构建之道,来自我司 PB 级索引数据的实战经验,相信对大家肯定有帮助. 近年来公司业务迅猛发展,数据量爆炸式增长,随之而来的的是海量数据查询等带来 ...

  4. 百亿数据,毫秒级返回查询优化

    近年来公司业务迅猛发展,数据量爆炸式增长,随之而来的的是海量数据查询等带来的挑战,我们需要数据量在十亿,甚至百亿级别的规模时依然能以秒级甚至毫秒级的速度返回,这样的话显然离不开搜索引擎的帮助,在搜索引 ...

  5. currenttimemillis 毫秒还是秒_Elasticsearch(ES)如何做到亿级数据查询毫秒级返回

    前言: 这个问题其实是更面向原理及实操方面的内容.换个问法,可以是这样来问:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 为了精简,如下内容将Elasticsearch简称为ES 如果你 ...

  6. 经典面试题:ES如何做到亿级数据查询毫秒级返回?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:8rr.co/5Csc 面试题 es 在数据量很大的情况下( ...

  7. 1.3 万亿条数据查询,知乎如何做到毫秒级响应?

    (给视学算法加星标,提升数据技能) 作者:孙晓光 http://itindex.net/ 知乎搜索后端负责人,目前承担知乎搜索后端架构设计以及工程团队的管理工作.曾多年从事私有云相关产品开发工作,关注 ...

  8. Elasticsearch如何做到亿级数据查询毫秒级返回?

    https://zhuanlan.zhihu.com/p/60458049 如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有 ...

  9. 好文深思:1.3 万亿条数据查询,如何做到毫秒级响应?

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 知乎,在 ...

最新文章

  1. 揪出MySQL延迟上千秒的元凶
  2. JS-String方法
  3. 用Python对XML读取和处理
  4. C#面向对象名词比较(一)
  5. Java中HashMap和TreeMap的区别深入理解,java开发面试笔试题
  6. 京东java开发面经_面经|京东技术中台Java开发面经
  7. List 列表中的对象在循环中的声明问题
  8. lua怎么嵌入php,Linux下安装PHP的lua扩展库
  9. jsp开发教程之 仿MOP论坛 三(帖子列表-上)
  10. flex 平铺布局_Flex布局的个人见解~阮一峰的网络日志
  11. 【转】CSS3学习笔记 之 动态伪类选择器
  12. Python 2X 版本 痛苦的编码格式,一遍完美解决Unicode、GB2312、GBK编码格式的文章
  13. 桌面运维转网络要做什么准备,高级网工学习路线分享
  14. 多天线技术(MIMO)基础
  15. 多客技巧分享|【建议收藏】TikTok七大避坑指南帮你少走许多弯路
  16. java毕业生设计学术会议信息网站计算机源码+系统+mysql+调试部署+lw
  17. 使用Ajax进行前后端交互(一)
  18. 排查内存orJVM内存飙高
  19. 用telnet+openocd+jtag_dpi+vcs仿真调试RISCV的cpu
  20. visio中直线交叉处消除跨线的方法

热门文章

  1. 本科主要数学科目的页数统计
  2. java.lang.String cannot be cast to org.apache.flink.table.data.StringData
  3. unused import statement
  4. superset在云主机上的配置
  5. mysql看表关联视图_MySQL数据库 : 自关联,视图,事物,索引
  6. oracle的脚本语言,Oracle 无法执行SQL脚本语句
  7. Spring MVC 参数自动绑定List的解决方案
  8. 2.Nginx学习-The HTTP Core module
  9. 30 个提高Web 程序执行效率的好经验[转]
  10. 阿里云ECS服务器磁盘空间异常,或者爆满