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?

Foi útil?

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!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top