Отправить NSString с 0
-
27-09-2019 - |
Вопрос
Я пытаюсь отправить строку, прекращенную с 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», когда вы его получите!