Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
C++ で char 配列をソケットに書き込もうとしています。ただし、書き込みたいデータは生の画像データであるため、文字列の終了を示す「\0」が含まれています。「\0」を含むすべてのデータを送信する方法はありますか?
更新:問題はの使用にありstrlen()、ではありませんでしたwrite()
strlen()
write()
send() 関数は null バイトを気にしません。送信するように指示した長さを送信します。
と の両方send()でwrite()、void*バッファと書き込むバイト数を受け取ります。したがって、NUL ターミネータの問題は API レベルでは発生しません。
send()
void*
アプリケーション コードに関する限り、バイナリ データを表すために C 文字列を使用しないだけで問題ありません。
null 文字を TCP 文字列に書き込んでも問題ありません。
私は個人的に、それを何かの終了として扱う TCP API がないと聞いた。通常、バッファと長さを指定しますが、それ以外は重要ではありません。