Я пытаюсь отправить некоторые данные через сокет с winsock. Я сталкиваюсь с проблемой, когда мои данные (которые на самом деле являются массивом символов) могут содержать некоторые нули, но символ 0x00 представляет нулевой символ, и все последующие символы обрезаются, поскольку он представляет завершающий символ. У кого-нибудь есть идеи как мне это решить? Какую альтернативу я мог бы использовать?
Я хочу послать байты с winsock, которые могут представлять целые числа, массивы символов или что-то еще. Принимающая сторона позаботится о правильном прочтении, но это не касается этого поста.
Я думаю, что вы можете делать что-то вроде этого:
`
char s [100];
// Делаем вещи с s
отправить (носок, s, strlen (s), флаги);
`
strlen находит длину строки, подсчитывая количество символов, пока не найдет NULL (0).
сделать первые два байта в вашем потоке данных, быть длиной буфера, который вы отправляете.
затем отправьте столько байтов.
с другой стороны, прочитайте два байта, и затем вы точно знаете, сколько байтов должно прийти к вам.
это позволит вам обойти эту проблему.
также порядок байтов в сети Google. Есть несколько удобных вызовов функций, которые облегчают переносимость.