按照包来计数。
首先进行一波理论计算:
1.ETH驱动通信速率是100M/s.
2.假设我发的每包数据有64个字节 == 512bit
3.按计算器可得到 100,000,000 / 512 = 195312包 ≈ 195kpps
理论上最快1秒可以发195包 64个字节长度的数据呢!
实践:
三两下写好代码,插上网线!!
1.建立socket
2.写好发送任务
```if ((ETH_Sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
rt_kprintf(“Socket error
“);
}
else
{
struct sockaddr_in server_addr;
/ 初始化预连接的服务端地址 /
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(4001);
server_addr.sin_addr.s_addr = IPADDR_ANY;
rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
{
uint8_t send_databuf[64]={“abcdefghijklmnopqistuvwxyz”};
uint8_t len;
}3.写好定时任务
/ 创建定时器 3 周期定时器 /
timer3 = rt_timer_create(“timer3”, timeout3, RT_NULL, 1,
RT_TIMER_FLAG_PERIODIC);```
[i=s] 本帖最后由 学长啊啊啊 于 2020-4-17 09:35 编辑 [/i]
接上昨天的:(感谢2L大哥的建议)
抓包工具得到,发送640字节的10包UDP数据包用时1600微秒。
[attach]15064[/attach]
折算成BPS(bit per second)的单位 就是640字节10包8bit/1600微秒=32 bpus = 32Mbps
那么问题来了!!
ETH硬件的通信速度不是 100Mbps嘛?
那发送640108= 51200bit 的内容 不是应该只需要512us的时间就足够了嘛?
牛哇👍