-1

C++ で char 配列をソケットに書き込もうとしています。ただし、書き込みたいデータは生の画像データであるため、文字列の終了を示す「\0」が含まれています。「\0」を含むすべてのデータを送信する方法はありますか?

更新:問題はの使用にありstrlen()、ではありませんでしたwrite()

4

3 に答える 3

4

send() 関数は null バイトを気にしません。送信するように指示した長さを送信します。

于 2012-12-09T22:14:31.853 に答える
1

と の両方send()write()void*バッファと書き込むバイト数を受け取ります。したがって、NUL ターミネータの問題は API レベルでは発生しません。

アプリケーション コードに関する限り、バイナリ データを表すために C 文字列を使用しないだけで問題ありません。

于 2012-12-09T22:14:16.867 に答える
0

null 文字を TCP 文字列に書き込んでも問題ありません。

私は個人的に、それを何かの終了として扱う TCP API がないと聞いた。通常、バッファと長さを指定しますが、それ以外は重要ではありません。

于 2012-12-09T22:14:06.670 に答える