Question

Je suis en train d'envoyer une chaîne terminée par \ 0 à une prise tcp mais il semble que le \ 0 ne parvient jamais à sa destination.

En utilisant ce code:

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

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

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

il me semble que d'envoyer @"<b/> ". Probablement le \0 est considéré comme la fin de la uint8_t.

Quelqu'un peut-il me dire comment il faut le faire ??

Était-ce utile?

La solution

Bien sûr, il envoie sans \ 0. strlen vous renvoie la longueur de la chaîne, sans compter null terminateurs. Changez-le à quelque chose comme

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

Autres conseils

Pourquoi voulez-vous envoyer « ] 0] caractère dans votre chaîne .....

Tu ne peux pas utiliser tout autre caractère ... parce que « \ 0 » est toujours traité comme caractère de fin!

Et si vous voulez vraiment envoyer cette façon puis envoyer un autre caractère et la carte à « \ 0 » quand vous receiv le!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top