Вопрос

Я пытаюсь отправить строку, прекращенную с 0 в сокет TCP, но кажется, что 0 никогда не достигает своего назначения.

Используя этот код:

NSString* s=@"<b/> \0_";

uint8_t *buf = (uint8_t *)[s UTF8String];

int resCode = [outputStream write:buf maxLength:strlen((char *)buf)];

Я только что отправляю @"<b/> ". Отказ Наверное \0 рассматривается как конец uint8_t.

Может кто-нибудь сказать мне, как это должно быть сделано ??

Это было полезно?

Решение

Конечно, он отправляет это без 0. strlen Вернет вам длину строки, не подсчитав нулевые терминаторы. Изменить его на что-то вроде

[outputStream write:buf maxLength:(strlen((char *)buf) + 1)]

Другие советы

Почему вы хотите отправить «] 0] символ в вашей строке .....

Разве вы не можете использовать какой-либо другой символ ... потому что « 0» символ всегда рассматривается как расторный характер!

И если вы действительно хотите отправить его таким образом, затем отправьте другой символ и составьте его на « 0», когда вы его получите!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top