0

Windows でサーバー クライアント アプリケーションを開発しています。送信されるメッセージが非常に小さい場合 (約 20 ~ 30KB)、私のプログラムは問題なく動作します。しかし、送信されたバッファのサイズが 50 KB を超える瞬間、プログラムは動作しません。send() 関数は、希望する正確なバイト数を送信することに気付きました。しかし、recv 関数はそれほど受信しません。ネットワークがバッファを内部的に断片化した可能性があると想定しています。しかし、recv() を複数回呼び出した後、バッファ全体を受信できるようにすべきではありませんか? TCP 経由でバッファを送信しているので、理想的には、メッセージ全体を受信することを保証する必要があります。50KB 以上のバッファを送信すると、最初の recv() で約 16KB が得られますが、次に recv() が呼び出されると、空のバッファが得られます。メッセージが失われるのはなぜですか?また、入手する方法はありますか?これは、50KB を超えるバッファーでのみ発生します。

Windowsソケットライブラリを使用してCでコーディングしています。

4

0 に答える 0