3

Linux、またはWindowsソケットプログラミングの場合

readは、正常に受信されたバイト数を示す値を返すことを知っています。

この戻り値は、要求された長さよりも短い可能性があります。(つまり、受信バッファーに50バイトしかない場合、read(sd、buf、100)は50を返す可能性があります)

それは可能ですか

send(sd, buf, 100);

1〜99の値を返しますか?もしそうなら、その機会は何ですか?具体的な状況の例を知りたい。

前もって感謝します

4

1 に答える 1

5

man公式の仕様については、ページ、またはWinsockについて話している場合はMSDNドキュメントを参照してください。

実際には 、ブロッキングモードではsend()、ドキュメントの内容に関係なく、エラーが発生した場合を除き、すべてのデータが送信されます。エラーが発生した場合は、何も送信されません。

非ブロッキングモードでは、ソケット送信バッファに収まるものをすべて送信し、> 0の場合はその長さを返します。ソケット送信バッファがいっぱいの場合、errno=で-1を返しますEWOULDBLOCK/EAGAIN

于 2013-02-05T06:05:44.030 に答える