0

奇妙な質問があります。Androidで次のテストを行いました:

i=0;
while(i< PACKET_NUMBER)
{

//UDP パケット送信
if( sendto(sockfd,buffer,strlen(buffer),0, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) <= 0)
{
error("udp 経由でリモート ホストにパケットを送信できませんでした\ n");
}
私は++;
}

このテストは、さまざまなバッファー サイズで行いました。バッファ サイズが数値よりも小さい場合 (約 500 バイトである必要があります)、どのサイズを選択しても ( 20 40 80 160 320 など)、while ステートメントはほぼ同時に実行できます (3 分 10 秒など)。ただし、パケット サイズが 510 520 600 1280 のように 500 より大きい場合、while ステートメントの実行時間は 10 分を超えるなど、はるかに長くなります。誰かが理由についてのヒントを教えてもらえますか?

4

1 に答える 1

1

実際、この問題はstrlen()が原因である可能性が高く、ループ/0の反復ごとにバッファ内の文字を見つけようとします!while()

変数に置き換えると実行速度が速くなります。

別の考えられる理由は、パケットの断片化です。

于 2012-08-24T08:42:00.953 に答える