Я пытаюсь реализовать простое клиент-серверное приложение, в котором клиент или сервер могут отправлять динамическое число байтов за один write()
вызов.
Например, предположим, что клиентотправляет поток байтов 1500 байтов.И сервер читает каждые 1000 байт.
int BUFFER_SIZE = 1000;
...
read( iSockFD, cBuffer, BUFFER_SIZE );
Я могу использовать цикл и вызывать read до тех пор, пока его возвращаемое значение не станет 0
.Но у клиента может быть несколько write()
вызовов в цикле (то есть, отправка нескольких сообщений).
Мой вопрос, повлияет ли это на read()
на стороне сервера?Это означает, что два последовательных write()
из 1000 байт на стороне клиента будут считываться одним read()
с размером буфера 2000 байт на стороне сервера?
Если это так, каковы рекомендуемые способыреализации такого сценария?Должен ли я использовать разделитель для сообщений (используя алгоритм кодирования)?
Я понимаю, что это больше относится к сокетам, а не к C ++.Но ваша помощь и руководство высоко ценятся.
ОБНОВЛЕНИЕ :
Цель состоит в том, чтобы внедрить простую систему промежуточного программного обеспечения для отправки сообщений различных типов, где сообщения будутперед отправкой закодировать в двоичном формате.