我有一个奇怪的问题。 我在android上做了以下测试:
I = 0;
而(i
的
// UDP发送数据包
if(sendto(sockfd,buffer,strlen(buffer),0,(struct sockaddr *)& serv_addr,sizeof(serv_addr))< = 0)
{
错误(“无法通过udp发送数据包到远程主机\ n”);
}
我++;
}
的
我使用不同的缓冲区大小进行了此测试。当缓冲区大小小于一个数字(应该是大约500字节)时,不选择我选择的大小,例如20 40 80 160 320 ,while语句可以在几乎相同的时间内执行,例如3分10秒。但是,当数据包大小超过500时,如510 520 600 1280,while语句的执行时间要长得多,例如超过10分钟。谁能给我一些关于原因的提示?
答案 0 :(得分:1)
实际上,问题很可能是由 strlen()引起的,它试图在/0
循环的每次迭代中在缓冲区中找到while()
个字符! / p>
将其替换为变量,执行速度将会提高。
另一个可能的原因是数据包碎片。