当输入数据大小稍微增加时,为什么udp发送变得如此缓慢?

当输入数据大小稍微增加时,为什么udp发送变得如此缓慢?,udp,packet,processing-efficiency,sendto,Udp,Packet,Processing Efficiency,Sendto,我有一个奇怪的问题。 我在android上做了以下测试: i=0 而(i

我有一个奇怪的问题。 我在android上做了以下测试:

i=0
而(i {

//UDP发送数据包

如果(sendto(sockfd,buffer,strlen(buffer),0,(struct sockaddr*)&serv_addr,sizeof(serv_addr))事实上,问题很可能是由strlen()引起的,它在
while()
循环的每次迭代中都试图在缓冲区中查找
/0
字符

用变量替换它,执行速度将提高


另一个可能的原因是数据包碎片。

您发送了多少数据包?您是指数据包套接字?只有一个我是指
数据包
,即您所说的“数据包”。一个数据包就是一个缓冲区,它的大小应该像20 40 80 160,特别是如果缓冲区是二进制数据。如果它不包含
\0
,则strlen将在大量内存中搜索一个,可能会发送未知大小的数据包。