TCP/IP接続ソケットに次のオプションを設定しました。 SO_SNDBUFとSO_RCVBUFオプションに設定された値は10240です。recvとsendコールに渡されるバッファサイズは1024です。完全なメッセージが転送されるまで、ソケットは呼び出しブロックを送受信しますか?
recvコールは返される前に常に1024バイトを待っていますか?送信者は、サイズが1024のパケットを送信します。
返送前に送信呼び出しが常に1024バイトを送信するのを待つのですか?
指定されたバイトを転送する前に、呼び出しが返されるのを防ぐための他のオプションを設定する必要がありますか?
setsockopt(*p_sockwk, SOL_SOCKET, SO_REUSEADDR, (void*)&reuseaddr, (socklen_t)sizeof(socklen_t));
setsockopt(*p_sockwk, SOL_SOCKET, SO_SNDBUF, (void*)&sendbufsize, (socklen_t)sizeof(socklen_t));
setsockopt(*p_sockwk, SOL_SOCKET, SO_RCVBUF, (void*)&recvbufsize, (socklen_t)sizeof(socklen_t));
setsockopt(*p_sockwk, IPPROTO_TCP, TCP_NODELAY, (void*)&delay, (socklen_t)sizeof(socklen_t));
@ErikAlapää非常に役に立ちます。全体の本?なぜ最新版なの?以前のものは何が間違っていたのですか?お願いします。 – EJP
@EJP質問をした人々がAPIとプロトコルの背後にある考え方を最小限に抑えようと試みても、迷惑になるだけです。本書では、以前のエディションはこれまでに書かれた最高のプログラミングブックの一部ですが、最新のものを使用すると、最新のものが提供されます。 ipv6とスレッド。 –
@ErikAlapää書籍全体をお勧めすると、迷惑を軽減することができますが、実際にはこの質問に対する有益な回答ではありません。 – EJP