Я столкнулся с интересной проблемой C-сокетов.
Я получаю входящие строки и заметил, что случайно получу 3 строки одновременно для первых 2 ~ 4 строк.
Например, я получаю следующие входящие строки.
1~message~i love you\r\n
2~message~do you love me?\r\n
3~message~when are we going to meet again?\r\n
4~message~How about now?\r\n
5~message~Oh! I'm pregnant!\r\n
Я добавил счетчик для отслеживания количества полученных сообщений и заметил, что счетчик иногда не считает первые 3 строки. Например
1~message~i love you\r\n
->Line 1 received
2~message~do you love me?\r\n
3~message~when are we going to meet again?\r\n
4~message~How about now?\r\n
->Line 2 received
5~message~Oh! I'm pregnant!\r\n
->Line 3 received
Ниже приведен мой код для печати номера строки
int lineNo = 1;
while ((recvBytes = recv(clntSockfd, buffer, sizeof(buffer), 0)) > 0) {
printf("%s", buffer);
memset(&buffer, 0, sizeof(buffer));
printf("Line %d received\n", lineNo++);
}
Я не уверен, почему это происходит, поскольку эта проблема не появилась, когда я кодировал в Java nio.
Есть идеи, ребята?