Я мало знаю о розетках, но пока у меня не было особых проблем. Я на самом деле застрял на том, как узнать, когда другая сторона закончила отправлять сообщения. До сих пор у меня есть цикл while на стороне сервера, который читает данные из сокета, пока ничего не осталось (или это то, что предполагается делать). Это код:
char c[1024]; //buffer
inst much;
while(much = read(sockfd, &c, 1024) > 0) {
printf("read %d, clientSays> %s\n", much, c);
}
printf("reading, finished\n");
Итак, на стороне клиента я отправляю сообщение "hello world", которое фактически отображается на консоли сервера, но не печатает сообщение "чтение заканчивается", поэтому я предполагаю, что оно застревает в ожидании другого сообщения ,
Я думал, что функция чтения будет возвращать 0, когда нечего было читать, но я думаю, это не так
Итак, что я делаю не так?
Обновление
На самом деле, прочитав ваши ответы и немного пройдя код, я понял, что для этого и нужны протоколы.
Я должен знать заранее, когда одна сторона закончила отправку и когда другая сторона должна начать писать. Возможно добавление последнего символа, чтобы сообщить, что я закончил отправку, или префикс размера сообщения.
Спасибо за ваши ответы.