当前位置:  技术问答>linux和unix

linux socket发包收包,cpu使用太多,请教?

    来源: 互联网  发布时间:2016-08-03

    本文导语:  本帖最后由 krockk 于 2010-01-22 14:28:42 编辑 程序1 父进程不停地发包(pf_socket,只添了个mac头), fork了一个子进程,统计传回来的包, while(1) { if((len_t=recvmsg(s, msg, 0)) > 0 && ((Frame_t *)(msg->msg_iov->iov_base))->EtherHeader.h_proto == ht...

本帖最后由 krockk 于 2010-01-22 14:28:42 编辑
程序1
父进程不停地发包(pf_socket,只添了个mac头),
fork了一个子进程,统计传回来的包,


while(1)
{
if((len_t=recvmsg(s, msg, 0)) > 0 && ((Frame_t *)(msg->msg_iov->iov_base))->EtherHeader.h_proto == htons(ehtype))
{
memcpy(&pktime, CMSG_DATA(cmsg), sizeof(pktime));

time = pktime.tv_usec - ((Frame_t *)(msg->msg_iov->iov_base))->pkttime;
if (time 0)
{
recvnum++;
memcpy(buf, buf+6, 6);
memcpy(buf+6, SA, 6);
from->sll_pkttype = PACKET_OUTGOING;
n=sendto(s, buf, len_t, 0, (struct sockaddr*)from, sizeof(*from));
if(n>0)
sendnum++;
......
}
}

两个程序一运行,cpu直接用完了,我试图降低发包速率,不影响cpu正常的情况下,只有20M,太低了吧

请教原因及解决方法?多谢!

|
可以sleep下! 

|
    你两个程序时在一个机上上运行的吗?那样的话CPU用光的的可能性很大的,都是while(1)。如果在不同的机器上应该会好些的!毕竟接收是要用时间的,弱弱的问下liuyu60305002 sleep不影响效率吗?听说sleep(0)可以达到cpu休眠的目的,但是我试验的结果是没有休眠。期待更明确的回答!

|
嗯,这样的话,你可以用毫秒级的定时器,setitimer!在你程序一发送的时候隔段时间试试!

|
发包 用sleep,多休息.
收包 用select,自己别好盯着让别人去干活! 
^_^

|
5毫秒或者10毫秒试试吧~想速率进可能大,cpu使用不要太离谱,我个人认为是鱼和熊掌的关系~~

|
介绍 sleep(0)
http://blog.csdn.net/burningcpu/archive/2008/09/20/2955275.aspx 

    
 
 

您可能感兴趣的文章:

  • 关于 linux 网络 发包
  • linux下pth-1.4.0和glib-1.2.0开发包怎么安装?(在线等)
  • 求linux下,指定速率发包的软件
  • 请教一下linux 系统下用icmp 发包 的问题
  • Linux下安装mysql开发包
  • Linux下有没有直接发包的工具?
  • 同一个开发包,为什么在linux下生成的动态库比windows上大这么多?
  • 请教一Linux內核自帶的網絡发包工具: pktgen 的問題
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 向linux达人请教linux下5.1声道测试工具
  • 请教一下,如果想在linux下开发java,选哪个版本的linux好一点
  • 小弟想请教,如果现在不像装linux了怎样把linux的分区改回ntfs格式的?
  • 请教:linux启动盘和一张盘的linux有何区别?
  • 请教linux高手,在Linux
  • 在linux下面怎么安程序啊?我刚裝了一个 linux,下了一个迅雷安装程序,可是不知道怎么安装啊?真心请教。
  • 初次接触linux,关于linux 用户权限问题请教!
  • 请教linux 下的adsl拨号问题.
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 各位大狭!小弟初学Linux,请各位列举学Linux的网站,留下QQ,Email以向各位请教!!!多谢了!!!
  • 菜鸟请教Linux
  • 高手看过来:请教如何在移动硬盘上安装Linux?
  • 请教:如何在Linux下获得EDID信息
  • Linux常用命令介绍:更改所属用户群组或档案属性 iis7站长之家
  • 请教大家一下,linux运维方面的书应该读什么?
  • 请教:如何直接使用RedHat Linux 9的ISO文件安装Linux?
  • 我的linux装不上啊???请教高手
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • linux支持ti-rpc么?ti-rpc在linux中是不是只使用udp协议,不能使用tcp协议
  • linux下free命令显示的内存使用情况分析
  • 求redhat linux 9.0下可以使用的oracle 10g或9i,还有redhat linux 9.0下可以使用的eclipse下载地址
  • linux下不使用sudo命令执行docker的操作步骤
  • 在XP下使用VMWare安装了Linux AS 5.6之后,使用FTP工具可以远程连接Linux,而在cmd命令行中却连接不上,什么原因 ?
  • 如何使用linux下gdb来调试python程序
  • 原来装了linux和win2k,使用LiLO启动,现在重新win2k,如何恢复使用LILO来引导使得Linux可用
  • linux/Centos/ubuntu下如何使用umask命令修改新建文件时的默认权限
  • 在shell中使用数组需要什么特殊的条件马? 怎么在有的linux下能够用,在有的linux下就不能能使用?
  • linux下c/c++使用hash_map方法介绍
  • asp程序使用的access在Linux下如何使用!
  • linux下objdump命令用法介绍及如何使用objdump命令进行反汇编
  • [请置顶]关于Linux的安装使用问题 请放到 软件使用/操作系统 里提问
  • linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明
  • 新装的Linux使用root用户不能使用FTP?
  • linux top命令详解以及top命令的各项使用技巧详细说明
  • LINUX下使用Eclipse,如何使用交叉编译器?
  • linux系统下使用使用性能监视工具的前提?
  • 使用VWMARE安装linux的内存使用问题
  • 嵌入式Linux使用外挂Vsftpd不能正常使用, 请高手解答,谢谢。
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3