Объединенные строки, заканчивающиеся на \ 0 в C

1

Есть ли способ иметь конкатенированные строки в C, которые разделены между ними символом \0?

Например. Я создаю простую программу, состоящую из клиента (на Java) и сервера (в C). Клиент java отправляет сообщение с двумя "частями" в нем: операция (например, REGISTER) и параметр (USERNAME). Затем сервер должен распознать операцию и параметр и выполнить некоторые операции.

Дело в том, что операция и параметр (обе строки) должны заканчиваться символом \0, но при этом сервер распознает только операцию (поскольку, когда он получает сообщение от клиента, он перестает читать когда он находит символ \0).

Есть ли способ получить сообщение от клиента как "ОПЕРАЦИЯ\0PARAMETER\0" и распознать строку для OPERATION и строку для PARAMETER?

PD: Я реализую эту программу с сокетами TCP, а на стороне клиента я использую printwriter для отправки сообщения.

PD2: сообщение не может превышать 256 байт

заранее спасибо

  • 0
    Чтобы разбить строку на токены, обычно используется strtok
  • 0
    Вы действительно спрашиваете, как разрешить \ 0 в строке C?
Показать ещё 3 комментария
Теги:
sockets
tcp

1 ответ

1

Просто продолжайте называть recv (накапливая данные в буфере), пока полученные вами данные не содержат два нулевых байта. Как только это произойдет, проанализируйте полученные данные, чтобы извлечь обе строки.

  1. Очистите буфер.

  2. Вызовите recv для чтения (более) данных в буфер.

  3. Подсчитайте количество нулевых байтов в используемой части буфера. Если оно меньше 2, перейдите к шагу 2.

  4. Извлеките две строки из буфера. Один начинается с начала буфера. Другой запускается после первого нулевого байта.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню