Enviar un NSString con \ 0
-
27-09-2019 - |
Pregunta
Estoy intentando enviar una cadena terminada con \ 0 a un socket TCP pero parece que el \ 0 no nunca llegan a su destino.
El uso de este código:
NSString* s=@"<b/> \0_";
uint8_t *buf = (uint8_t *)[s UTF8String];
int resCode = [outputStream write:buf maxLength:strlen((char *)buf)];
Sólo parece enviar @"<b/> "
. Probablemente el \0
es visto como el final de la uint8_t
.
Puede alguien decirme cómo se debe hacer ??
Solución
Por supuesto que lo envía sin \ 0. strlen
le devolverá longitud de la cadena, sin contar los nulos terminadores. Cambiarlo a algo como
[outputStream write:buf maxLength:(strlen((char *)buf) + 1)]
Otros consejos
¿Por qué desea enviar '] 0] carácter en la cadena .....
¿No puedes utilizar cualquier otro personaje ... porque '\ 0' siempre es tratado como carácter de determinación!
Y si realmente desea enviar esa manera a continuación, enviar un carácter diferente y asignarla a '\ 0' cuando se reci!