用fork子进程发包

kimsee 2010-02-10 01:55:55

//....建立长连接
for(i=0;i<n;i++){
if( (pid = fork()) == 0){ // child
for(;;){
sendpack(sockfd); }
printf("--------------------------child %d done.----------------------------\n",i);
}
exit(0);
}
}
while(wait(NULL)>0);
close(sockfd);
//....

n是创建的子进程数目。sendpack()负责往服务器发包,用于简单的测试。客户端与服务器之间是长连接。
用wireshark截包,发现每秒钟也就最多发送120-130次[PSH,ACK]。这个值是由客户端机器的网卡决定的吗?如何能提高每秒的发送次数?
...全文
83 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kimsee 2010-03-03
  • 打赏
  • 举报
回复
引用 4 楼 wolf0403 的回复:
你不创建子进程直接发包试过没?进程创建的开销考虑了没?

不建子进程直接发试过,差不多。
kimsee 2010-03-03
  • 打赏
  • 举报
回复
引用 3 楼 pengxn 的回复:
sendpack(sockfd);

有实现锁的机制吗?

没有使用锁
Wolf0403 2010-02-10
  • 打赏
  • 举报
回复
你不创建子进程直接发包试过没?进程创建的开销考虑了没?
pengxn 2010-02-10
  • 打赏
  • 举报
回复
sendpack(sockfd);

有实现锁的机制吗?
_七爷_ 2010-02-10
  • 打赏
  • 举报
回复
帮你顶一下,希望有人帮你解答
kimsee 2010-02-10
  • 打赏
  • 举报
回复
又或者是不是一开始发送的时候,网卡每秒发送次数是一个峰值,远高于这个120次,然后慢慢网卡自动调节降下来了?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧