0

\0 で終わる文字列を TCP ソケットに送信しようとしていますが、\0 が送信先に到達しないようです。

このコードの使用:

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

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

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

だけ送っているようです@"<b/> "。おそらく、\0は の終わりと見なされuint8_tます。

誰かがそれをどのように行うべきか教えてもらえますか??

4

2 に答える 2

4

もちろん\0なしで送ります。strlennull ターミネータを数えずに、文字列の長さを返します。次のようなものに変更します

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

于 2010-08-11T14:38:04.930 に答える
-2

なぜ文字列で ']0] 文字を送信したいのですか.....

'\0' 文字は常に終了文字として扱われるため、他の文字は使用できません!

本当にそのように送信したい場合は、別の文字を送信して、受信時に「\0」にマップしてください!

于 2010-08-11T14:25:36.160 に答える