У меня есть общий вопрос о функции recv в winsock.Я пишу программу с архитектурой клиент / сервер, в которой клиент отправляет изображение с камеры на сервер, а сервер отправляет другое изображение обратно клиенту.Клиент отправляет несколько изображений, пока программа не будет закрыта.И сервер будет отвечать на каждое полученное изображение другим изображением.
Клиент (отправка) ----> Сервер (получение) ----> Сервер (отправка) ----> Клиент (получение),^ _ __ _ __ _ __ _ ____ LOOP _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ _ |
Моя проблема в том, что сервер получает функцию.Если я вызову функцию приема несколько раз с большим буфером в 512 байт, как я узнаю, что получил все изображение?Примеры, которые я нашел, просто ждут, пока соединение не закроется (recv возвращает 0), но я хочу получить несколько изображений, не закрывая соединение.Но если я получу до тех пор, пока в буфере не останется ни одного байта, функция recv остановит поток, пока не появятся новые байты (но этого никогда не произойдет, потому что сервер сначала хочет отправить собственное изображение обратно клиенту до полученияследующий).
Так есть ли возможность сообщить серверу, что все изображение получено, чтобы он мог отправить свое собственное изображение обратно клиенту, не дожидаясь следующих байтов или закрытого соединения?