linux socket发包收包,cpu使用太多,请教?
程序1
父进程不停地发包(pf_socket,只添了个mac头),
fork了一个子进程,统计传回来的包,
C/C++ code:
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) time+=1000000;
......
}
}
程序2
另一端收包,并回传
C/C++ code:
while(1)
{
if((len_t=recvfrom(s, buf, maxlen, 0, (struct sockaddr*)from, fromlen)) > 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,太低了吧
请教原因及解决方法?多谢!
是每隔多少时间,发下包?我想有大的
相关问答:
现在需要在一个嵌入式系统中实现时间函数,编译器未提供time库函数,请问大家如何用c语言实现时间函数啊?
年月日时分秒 到 整数秒(从1970年开始) 之间的相关转换啊
类似mktime 和localtime的功能,谢谢
mktime ......
各位老师好:小弟有一点问题 琢磨了好久想请教大师们:
我在安装mysql的时候 安装到
./configure \
--prefix=/usr/local/mysql \
--with-extra-charsets=all
这步的时候出现:
configure: unknown option --p ......
如题,在WINDOWS底下的CODE会,但在LINUX下不知道如何实现,JS的代码应该是不一样的。 求教。
分不够再加。
http://topic.csdn.net/u/20100113/08/17ba1e71-4c33-43f6-91a5-0e031c86e5ed.html
linux ......
在Linux中,
如果父进程调用exit(0)退出,
那么由该进程创建的两个子进程会立即退出吗???
希望围绕该问题说清楚点,谢谢了。
不会
两个子进程脱离了父进程,独立运行
父进程死掉后,其所有子孙进程被init收 ......
请大家推荐一本国内作者写的linux编程方面的书,最好有串口编程方面的。
在china-pub上搜了搜,也没发现相关的书籍。
国内作者,还真少见!
google上去搜吧 楼主 自己多搜一些对比一下
不过还是推荐读国外的 ......