我正在尝试通过 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);
}
}