资源简介
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“
相关资源
- c++读写BMP JPG 和png 的图像文件linux
- Linux下C语言实现的FTP系统
- linux下FTP服务器与客户端的C语言实现
- Linux操作系统C语言编程入门pd
- linux下c语言实现多线程web服务器
- linux 上用C++实现的网络嗅探器
- Linux下C语言2048游戏代码
- 吕鑫-VS2015之C.C++.MFC等完整视频链接
- tcp udp 底层c++封装类windows和linux
- 简单的Linux下Ftp客户端C语言编写
- 《嵌入式Linux C语言应用程序设计》读
- 基于多线程的Linux聊天室系统
- myshell:操作系统编程-自己用C语言写
- linux下C语言编写的学生信息管理系统
- linux C语言 QQ模拟聊天.zip
- 基于linux下的C语言员工管理系统
- c++实现的sql基本功能 Linux,win下可运
- Linux环境下——C语言聊天室项目
- 实验五常用开发工具
- 《基于Linux的设备分配及磁盘调度》
- IPMSG飞鸽传书源代码,linux-c语言,有
- Linux下c语言实现对文本内容的三种输
- Linux c语言多线程实现生产者/消费者问
- Linux下硬盘分区读写程序
- linux ext2 文件系统模拟 c语言实现
- 操作系统文件管理系统c++
- 操作系统课程设计 linux文件系统
- linux环境下的QQ聊天系统
- linux局域网聊天软件server+client 源码
- linuxc语言信号量爸爸女儿儿子橘子苹
评论
共有 条评论