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 ??

¿Fue útil?

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!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top