锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C语言开源技术 / UDP丢包测试系统
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

UDP丢包测试系统


用户数据包说明

struct Comm_Client
{
int iccid;//用户号
unsigned char ccstatus;//状态
unsigned char citype;//整数类型
char ctype[6];//文本类型
int iindex;//包号
char cdata[1200];//模块数据
};
用户号在客户端初始化为0…99
状态、文本类型和模块数据初始化后就不会改变,不影响流程。
整数类型决定了业务类型,每种业务类型的流量不一样,则每种类型的包数不一样,包多了则占的带宽就多,包的个数决定了流量大小,假设100个包是100个量,1个包就是1个量,100个量肯定比1个量大。
包号在业务流量发送时,从0开始累加,100个包,则序号表示为:0,1,2….,99。服务器端在收到数据包时,通过当前包号和上个包号差值是否为1,来判断是不是有丢包。

客户端流程和说明

  1. 初始化数组内数据包和发送策略。
  2. 初始化SOCKET
  3. 发送循环
    1. 按策略发送
    2. 休眠1秒
  4. 关闭SOCKET
  5. 退出
  6. 初始化

数组内数据包和发送策略流程和说明

1、初始化用户类型个数

2、100个用户数据包初始化
a)、用随机值来生成类型
b)、用户类型个数统计

3、用不同类型数据的发送量计算每个用户每次发送多少包,100个用户分为不同类型,把类型总的发送量分到每个类型总的用户上,比如100是类型总量,这个类型有10个用户,则处理某个用户包时,就发10个包,凑够100个包。

4、退出

按策略发送

  1. 获取开始时间
  2. 100个用户数据包发送循环
  3. 业务类型包发送循环:用户循环发送内嵌套业务类型数据发送,保证整体的发送量满足要求
    1. 用循环变量来初始化包序号,保证序号自然累加
    2. 调用SendTo发送,发送时指定服务器IP
  4. 获取结束时间,并输出用时
  5. 退出

服务器端流程

主函数流程

  1. 定义变量,初始化2个端口值7000和7001
  2. 打开线程1,传入端口1
  3. 打开线程2,传入端口2
  4. 循环让主线程不退出

线程函数流程

  1. 分配socket
  2. 初始化地址和端口
  3. 绑定bind
  4. 进入接收函数

接收函数流程

  1. 初始化变量,分配30M内存
  2. 把socket加入到fd_set变量,准备进行socket状态判断
  3. 接收循环看流程图。

我有几个疑问,请你认真看完我的问题!!!
1:判断包标志,这个包是对应某种业务信息的报的数量吗:包有3个标志,用户号和业务类型号、和包序号,因为包序号的累加变化是在业务类型范围内,这个在用户数据包说明里有举例。第一次不用判断时只需要保存下来,后面是先判断用户号再判断包序号。
2:在第一个包:用户ID和包序号进行初始化时干什么?难道不是应该在最开始进行初始化,这个包初始化和那个初始化一样吗?
客户端的初始化是静态的,在发送端发送时,包序号会自然累加,本业务类型完成,再从0开始。而服务器的初始化是判断用的,在实时变化,不把上次的值保存下来,怎么进行丢包判断。
3:同一用户对包这个,备份包序号是什么时候产生的?在客户端?是不是当时已经绑定的对应的。
4:其实同问题3一样,新用户和当前用户ID哪来的。程序刚开始运行不都是才开始吗?这个用户等于才来,他和谁对比。同问题3一样了,刚来的用户哪有备份包序号?
3和4问题,在2问题理解了就明白了。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内