Envie uma NSString com 0
-
27-09-2019 - |
Pergunta
Estou tentando enviar uma string terminada com 0 para um soquete TCP, mas parece que o 0 nunca chega ao seu destino.
Usando este código:
NSString* s=@"<b/> \0_";
uint8_t *buf = (uint8_t *)[s UTF8String];
int resCode = [outputStream write:buf maxLength:strlen((char *)buf)];
Eu só pareço enviar @"<b/> "
. Provavelmente o \0
é visto como o fim do uint8_t
.
Alguém pode me dizer como isso deve ser feito?
Solução
Claro que envia sem 0. strlen
retornará seu comprimento da corda, sem contagem de terminadores nulos. Mude para algo como
[outputStream write:buf maxLength:(strlen((char *)buf) + 1)]
Outras dicas
Por que você quer enviar '] 0] personagem em sua string .....
Você não pode usar nenhum outro personagem ... porque o personagem ' 0' é sempre tratado como um personagem terminando!
E se você realmente deseja enviá -lo dessa maneira, envie um personagem diferente e mapeie -o para ' 0' quando você o receber!