Из-за требований спецификаций мне запрещено использовать 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;
}
Этот код работает до некоторой степени, но часто, когда когдаотправитель отправляет одно сообщение за другим, функция считывает оба этих сообщения одновременно в один и тот же буфер (добавляет).