资源简介
Linux下发包程序的实现。支持以指定的发包速率、发包网卡及指定的源数据包文件发送数据报文。同时支持 pcap 格式或 cap 格式数据包的发送。
编译此程序前需先安装 libpcap
代码片段和文件信息
// 以指定的发包速率、发包网卡及指定的源数据包文件发送数据报文。
// 同时支持 pcap 格式或 cap 格式数据包的发送
// 编译此程序前需先安装 libpcap
// 作者: peixw
// 交流QQ: 251207612
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define RET_PARA_ERROR (1)
#define RET_CTRL_C (2)
#define RET_SEND_ERROR (3)
#define TEN_EXP_SIX (1000000UL)
#define MTU_PAD_UNIT (4)
#define PKT_T_CAP (0)
#define PKT_T_PCAP (1)
#define PKT_T_INVALID (-1)
#define SIZE_64B (1U<<6)
#define SIZE_128B (1U<<7)
#define SIZE_2K (1U<<11)
#define SIZE_8K (1U<<13)
#define DEFAULT_MTU (1500)
#define MAX_frame_LEN (1600)
struct timeval g_stTimevalStart;
static unsigned long long g_ullSendSize = 0;
static unsigned long long g_ullSendPacks = 0;
static char g_szEthDriver[16] = {0};
static int g_iMtuMofified = 0;
// 打印统计信息
void PrintStatInfo(void)
{
u_long ulDiffUsec = 0;
struct timeval stTimevalNow;
u_long ulActualSpeed = 0U;
double dActualSpeed = (0.0);
if (0 != gettimeofday(&stTimevalNow NULL))
{
perror(“gettimeofday“);
return ;
}
printf(“Send finished!\n----------------------------------------------\n“);
char szTimeInfo[SIZE_64B] = {0};
time_t ttInfo;
ttInfo = g_stTimevalStart.tv_sec;
(void)ctime_r(&ttInfo szTimeInfo);
printf(“Start\tTime:\t%s“ szTimeInfo);
memset(szTimeInfo 0 sizeof(szTimeInfo));
ttInfo = stTimevalNow.tv_sec;
(void)ctime_r(&ttInfo szTimeInfo);
printf(“Stop\tTime:\t%s“ szTimeInfo);
u_long ulDiffSec = (stTimevalNow.tv_sec - g_stTimevalStart.tv_sec);
ulDiffUsec = stTimevalNow.tv_usec - g_stTimevalStart.tv_usec;
if(ulDiffUsec < 0)
{
ulDiffUsec += TEN_EXP_SIX;
--stTimevalNow.tv_sec;
}
ulDiffUsec += ulDiffSec * TEN_EXP_SIX;
dActualSpeed = (double)g_ullSendSize / ulDiffUsec;
dActualSpeed *= 8;
ulActualSpeed = (u_long)(dActualSpeed * TEN_EXP_SIX);
printf(“Total\tSend:\t%llu Bytes\n“ g_ullSendSize);
printf(“Time\tCost:\t= %lu(sec) = %lu(usec)\n“ ulDiffSec ulDiffUsec);
printf(“Actual Speed:\t= %ld b/s“ ulActualSpeed);
if(ulActualSpeed)
{
ulActualSpeed >>= 10;
}
if(ulActualSpeed)
{
printf(“ = %ld Kb/s“ ulActualSpeed);
ulActualSpeed >>= 10;
}
if(ulActualSpeed)
{
printf(“ = %ld Mb/s“ ulActualSpeed);
}
printf(“\nSended\tPack:\t%llu\n“
“----------------------------------------------\n“
相关资源
- LINUX下命令行界面的C语言细胞游戏
- 尚观培训linux许巍老师关于c语言的课
- 《Linux程序设计》第四版pdf高清电子版
- linux 0.11内核代码
- linux ac108多麦方案驱动(ac108.c)
- 共享内存 读写
- 简易web服务器的设计与实现
- 《LINUX C编程从初学到精通》光盘源码
- Linux那些事儿之我是USB core
- Linux c语言 学生成绩管理系统
- Linux开发工具手册
- Linux操作系统下C语言编程从零开始
- 基于Linux下C语言开发的员工管理系统
- 超级玛丽c++源码win32Linux平台
- UNIX/LINUX下C语言中文短信UCS2编码和解
- 嵌入式工程师必知必会 (完整高清中
- linux-2.6.24.rar
- Linux下C语言操作静态ARP表,包括增加
- c语言 linux 贪吃蛇.doc
- Linux多线程服务端编程:使用muduo C+
- 基于C++的SNMP++开发包
- libstdc++.so.6.0.23_linux7
- libstdc++-devel-4.1.2-48.el5.x86_64
- C++版仿Linux文件管理系统
- 基于SDL的贪吃蛇游戏
- 链表栈的基本操作(C语言
- 基于linux C/C++和Qt的聊天程序
- Linux+gladeGTK++C语言+mysql的模仿QQ聊天工
- 嵌入式linuxC语言程序设计基础教程
- C Programming in Linux Linux下C语言
评论
共有 条评论