0

winsock を使用してソケットでデータを送信しようとしています。データ (実際には char の配列) にゼロが含まれている可能性がありますが、char 0x00 はヌル文字を表し、後続のすべての文字は終了文字を表すためにカットされるという問題が発生しています。これをどのように解決すればよいか、誰にも考えがありますか? どのような代替手段を使用できますか?

私がやりたいことは、整数、文字配列、または何か他のものを表す可能性のある winsock を使用してバイトを送信することです。受信側は正しく読み取るようにしますが、これはこの投稿の関心事ではありません。

4

2 に答える 2

1

私はあなたがこのようなことをしているかもしれないと思います: `

char s[100];

// s で何かをする

send(sock, s, strlen(s), flags); `

strlen は、NULL (0) が見つかるまで文字数を数えることによって、文字列の長さを見つけます。

于 2012-10-06T19:37:58.313 に答える
0

データ ストリームの最初の 2 バイトを、送信するバッファの長さにします。その数のバイトを送信します。

もう一方の端で 2 バイトを読み取ると、受信するバイト数が正確にわかります。

これにより、問題を回避できます。

また、Googleネットワークのバイトオーダー。移植性を容易にするいくつかの便利な関数呼び出しがあります。

于 2012-10-06T22:26:15.800 に答える