由于规范要求,我不允许使用 recv() 或类似函数从套接字的 fd 中读取。我想知道如何使用 read() 重新制作该函数?
我尝试使用以下代码创建它
int recvFromFd(int connectionFd, char *buf, int size)
{
char c;
int i = 0;
for (read(connectionFd, &c, 1); i < size; i++)
{
buf[i] = c;
if (c == '\n' || read(connectionFd, &c, 1) == EOF)
break;
}
return i;
}
此代码在一定程度上有效,但通常当发送者一个接一个地发送一条消息时,该函数会同时将这两条消息读取到同一个缓冲区(追加)。