Отправить NSString с \ 0 - PullRequest
       14

Отправить NSString с \ 0

0 голосов
/ 11 августа 2010

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

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

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

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

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

Iтолько кажется, что отправить @"<b/> ".Вероятно, \0 рассматривается как конец uint8_t.

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

Ответы [ 2 ]

4 голосов
/ 11 августа 2010

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

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

0 голосов
/ 11 августа 2010

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

Не можете ли вы использовать какой-либо другой символ ... потому что символ \ 0 всегда считается завершающимсимвол!

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

...