我在 C 中遇到了 Socket 的问题。数据包大小设置为3072
in sock 选项,如下所示:
int recvBuff = 3072;
int recvLowAt = 2;
if (setsockopt(sock, SOL_SOCKET, SO_RCVLOWAT, &recvLowAt, sizeof(recvLowAt)) < 0) {
LOGE("Error setsockopt rcvlowat -> %s\n", strerror(errno));
close(sock);
return -1;
}
if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF, &recvBuff, sizeof(recvBuff)) < 0) {
LOGE("Error setsockopt rcvbuf -> %s\n", strerror(errno));
close(sock);
return -1;
}
有时数据包是< 3072
,我想得到它,即使它小于3072
if ((size = recv(sock, buffer, BUFF_SIZE, 0)) < 0) {
LOGE("Error recv -> %s\n", strerror(errno));
size = 0;
} else {
LOGI("%d bytes received\n", size);
}
输出是:
1448 bytes received
2896 bytes received
1448 bytes received
我想要这样的输出:
Output is :
3072 bytes received
3072 bytes received
3072 bytes received
500 bytes received
Whole data has been sended !
我试图MSG_WAITALL
用作标志,recv
但最后一个数据包没有发送......
我可以帮忙吗?谢谢!