Мне любопытно, как правильно отправить несколько кусков данных произвольной длины по сокету в C. Например, если нужно было отправить «имя пользователя» произвольной длины, «субъект» произвольной длины и«сообщение» произвольной длины, каким будет правильный процесс их отправки.Кроме того, данные, которые я пытаюсь отправить, могут не обязательно заканчиваться нулем, поэтому я не верю, что смогу правильно собрать их, основываясь только на нулевых байтах.
Метод, который я придумал, включал бы чтениепервые 4 байта ввода, полученные на сервере и интерпретирующие это как размер первого фрагмента данных, считывающие этот объем данных из сокета и интерпретирующие его как первую строку, считывающие еще 4 байта и интерпретирующие его как длинувторой строки, затем прочитайте ровно столько байтов и интерпретируйте ее как вторую строку и так далее.Однако, похоже, что это может быть подвержено ошибкам или иметь некоторые детали реализации, которые могут привести к ошибкам.Есть ли лучший способ сделать это?