tcp 経由で小さなパケットを送信しようとしていますが、サイズに問題があります。私のデータは255バイトのバッファです:
buffer[0] = 0x00;
buffer[1] = 0x04;
buffer[2] = 0x06;
buffer[3] = 0x08;
buffer[4] = 0x01;
buffer[5] = 0x01;
そして私は使用します
send(sockfd,buffer,6,MSG_NOSIGNAL|MSG_DONTWAIT);
しかし、6を使用するとデータを送信できません。次のように送信する場合:
send(sockfd,buffer,sizeof(buffer),MSG_NOSIGNAL|MSG_DONTWAIT);
その後、データが送信されますが、受信者は余分な 250 0x00 バイトを解析する必要があり、私はそれを望んでいません。なぜ6はダメなの?また、ランダムに10回試しても何も変わりません。
これが私のレシーバーコードです
while(1) {
ret = recv(socket,buffer,sizeof(buffer),0);
if (ret > 0)
printf("recv success");
else
{
if (ret == 0)
printf("recv failed (orderly shutdown)");
else
printf("recv failed (errno:%d)",errno);
}
}