- 2006-02-23 (Thu) 01:19
- プログラミング
socket でデータを送るときに send に MSG_DONTWAIT を指定して非ブロックにして送る.
int ret = ::send(sock, buf, len, MSG_DONTWAIT);
このとき,戻り値 ret は -1 ならエラー, 0 ならすべて送信キューに入った,正の値なら送信キューに入れられただけの長さ.とういことで,戻り値は送った長さではない.write と違うんじゃないのかとマニュアルに問いかけたい…
追記:
後日再び試すがちゃんと write と同じ結果になっている( send を再び).すべてキューに入った場合にもう一度0バイトを送信しにいってたのかもしれないなぁと思ってみたり.
- Newer: AWK - はじめ