質問

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.

誰かがそれをどうやってやるべきか教えてもらえますか?

役に立ちましたか?

解決

もちろん、それは 0なしでそれを送ります。 strlen null末端をカウントするのではなく、文字列の長さを返します。そのようなものに変更してください

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

他のヒント

なぜあなたはあなたの文字列のキャラクターを送りたいのですか?

他のキャラクターを使用できません...「 0」文字は常に終了キャラクターとして扱われるためです!

そして、本当にそのように送りたい場合は、別のキャラクターを送信して、それを受け取ったときに「 0」にマップしてください!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top