Home > プログラミング > non-blocking の send ではまる

non-blocking の send ではまる

socket でデータを送るときに send に MSG_DONTWAIT を指定して非ブロックにして送る.

int ret = ::send(sock, buf, len, MSG_DONTWAIT);

このとき,戻り値 ret は -1 ならエラー, 0 ならすべて送信キューに入った,正の値なら送信キューに入れられただけの長さ.とういことで,戻り値は送った長さではない.write と違うんじゃないのかとマニュアルに問いかけたい…

追記:

後日再び試すがちゃんと write と同じ結果になっている( send を再び).すべてキューに入った場合にもう一度0バイトを送信しにいってたのかもしれないなぁと思ってみたり.

★下記に2つの英単語をスペースで区切って入力してください

Home > プログラミング > non-blocking の send ではまる

Search
Feeds

Page Top