社区
Linux/Unix社区
帖子详情
求教啊~~~如何让程序延迟几微妙??
tangqingyang
2011-06-21 05:58:21
重发pcap文件里面的数据包,但是发的太快 网卡处理不了丢了很多 所以我想在每发一个包后延迟个几微妙。。
usleep和nanosleep都不行 最小延迟单位都是4毫秒左右。。用空循环 换个平台就没法实现。。。哎 头疼啊~~~
请高手指教啊 。。。最好能详细一点 本人初学者。。。
感谢 orz
...全文
164
11
打赏
收藏
求教啊~~~如何让程序延迟几微妙??
重发pcap文件里面的数据包,但是发的太快 网卡处理不了丢了很多 所以我想在每发一个包后延迟个几微妙。。 usleep和nanosleep都不行 最小延迟单位都是4毫秒左右。。用空循环 换个平台就没法实现。。。哎 头疼啊~~~ 请高手指教啊 。。。最好能详细一点 本人初学者。。。 感谢 orz
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
井朝天
2011-06-22
打赏
举报
回复
这个。。。在上层基本实现不了。
上层的延迟基本上都是睡眠(要让出处理器),而基本上调度一次所需要的 时间最少为10个毫秒。
就是说从你开始延迟,到下次执行到这里,至少10个毫秒已经过去了。
可以做个底层模块,udelay几微秒,但不能保证呵,用户态切换到内核,内核切换到用户态可能也要花点时间,不过应该差不多可以实现了。
tangqingyang
2011-06-22
打赏
举报
回复
会不会是因为我用虚拟机的缘故。。网卡是自适应的 所以才有问题
tangqingyang
2011-06-22
打赏
举报
回复
[Quote=引用 7 楼 guosha 的回复:]
基本是做不到的,我觉得你可以换个方法,你不一定要每个发包动作的间隔时间相同, 你只需要做到在100ms里发1M的包,这不相当于是以每秒10M的速率发送数据了。 因为收发都有缓冲,所以基本上可以达到你的要求.
[/Quote]
是的 我也用这方法限制速率,但是如果速率高的话 像60Mbs的时候 丢包就很大 10%左右 请教过别人 他们说是因为缓冲不够 瞬间来的太多包所以直接被filter给丢了一部分
所以我想试试看能不能慢点发 而不是一下涌到网卡 然后就被咔嚓了。。
tangqingyang
2011-06-22
打赏
举报
回复
[Quote=引用 10 楼 laojing123 的回复:]
这个。。。在上层基本实现不了。
上层的延迟基本上都是睡眠(要让出处理器),而基本上调度一次所需要的 时间最少为10个毫秒。
就是说从你开始延迟,到下次执行到这里,至少10个毫秒已经过去了。
可以做个底层模块,udelay几微秒,但不能保证呵,用户态切换到内核,内核切换到用户态可能也要花点时间,不过应该差不多可以实现了。
[/Quote]
言之有理 现在就希望在千兆网卡上面跑的时候丢包不要太多 要不还真挺麻烦的。。
快乐田伯光
2011-06-21
打赏
举报
回复
基本是做不到的,我觉得你可以换个方法,你不一定要每个发包动作的间隔时间相同, 你只需要做到在100ms里发1M的包,这不相当于是以每秒10M的速率发送数据了。 因为收发都有缓冲,所以基本上可以达到你的要求.
tangqingyang
2011-06-21
打赏
举报
回复
[Quote=引用 3 楼 xunxun1982 的回复:]
这里也有一篇文章
http://mervyn807.blog.163.com/blog/static/45307259201072744412703/
[/Quote]
因为有些文章说select和usleep一样 都有最小精度 都只能毫秒级 所以就没试。。等等去试试 说不定就峰回路转了 呵呵。。安慰下自己
zhaokai3000
2011-06-21
打赏
举报
回复
struct timeval to;
to.tv_sec = 0;
to.tv_usec = 10; //10微秒
select(0, NULL, NULL, NULL, &to);
可能实际延时要比期望的长几微秒(函数调用消耗)
tangqingyang
2011-06-21
打赏
举报
回复
[Quote=引用 1 楼 justkk 的回复:]
这么高的精度,你的系统不一定支持
关于短延迟 sleep usleep nanosleep select - Prayer - C++博客
[/Quote]
是啊 所以很头痛。。那有没有什么办法发包慢点 我用的是libpcap的pcap_sendpacket函数
xunxun
2011-06-21
打赏
举报
回复
这里也有一篇文章
http://mervyn807.blog.163.com/blog/static/45307259201072744412703/
xunxun
2011-06-21
打赏
举报
回复
nanosleep不是纳秒级么
那么使用select和pselect会如何?
justkk
2011-06-21
打赏
举报
回复
这么高的精度,你的系统不一定支持
关于短延迟 sleep usleep nanosleep select - Prayer - C++博客
萌新
求教
,小
程序
页面跳转
延迟
问题....
在mpvue小
程序
开发中,遇到一个问题,当点击tab进行页面跳转时,存在明显的
延迟
对象。 如下图所示: 个人猜测产生问题可能的原因: 类似于移动端开发300毫秒点击
延迟
。 那么如果是这种原因的话,那么,下面这种情况又该怎么解释呢? 从上面的图中可以看出,这里
延迟
并不严重。所以对于300ms点击
延迟
的原因,先存有疑点。 网络请求引起的
延迟
。 对于这种情况,上面的情况似乎都解释的清楚。 导航ta...
matlab里exist是什么意思,通达信exist函数用法,exist()函数在matlab中怎么用?
求教
大神~...
Q1:exist()函数在matlab中怎么用?
求教
大神~exist name等价于 r=exist(name) ,在
程序
里面这样更加实用0 不存在则返回值1 name 可以是变量名,如果存在,返回值2 函数名、m 文件名,存在则返回值3 mex 文件、dll 文件,存在则返回值4 内嵌的函数,存在则返回值5 p码文件 , 存在则返回值6 目录,存在则返回值7 路径,存在则返回值8 Java cl...
java zip 无法删除吗_关于解压缩zip后不能删除原文件的问题~~~~
求教
~~~~~~
收录日期:2021/02/24 14:25:08 时间:2016/07/23 16:27:33 标签:Java SE我写了一个解压zip的文件,想解压完以后删除zip文件,可以每次都删不掉,为什么?publicvoidzipPic(Stringpath,Stringname){Stringunzipfile=path+"\\"+name;//解压缩的文件名try{Fileoldd...
java显示长度_java字符长度显示控制
求教
~~~
/***截取字符串设定长度*@paramstr*@paramcutCount设定长度,字节数*@return*/publicstaticStringabbreviate(Stringstr,intcutCount){if(str==null)return"";StringresultStr="";char.../*** 截取字符串设定长度* @param str* @param cutCount ...
最近很火的摸珠子代码,
求教
~
摸珠子规则:下面是运行的概率 因为感觉代码太臃肿就写了四种,没往下写 来看代码:
Linux/Unix社区
23,125
社区成员
74,509
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章