ネットワークプログラミング相談室 Port20 at TECH
[2ch|▼Menu]
273:デフォルトの名無しさん
07/10/20 13:57:44
>>268
>FD_WRITEメッセージが来たら具体的にどういう処理をすればいいのでしょうか?
>FD_WRITEメッセージは自分が送信したいタイミングで来るわけでもないんですよね。

「自分の送信したいタイミングで送信する」 という考えを捨てて、「FD_WRITEが来たときに送信する」 ようにしる。
send で WOULDBLOCK が返ってきたら、残りのデータはその場で送信するのはいったん諦めて、どこか別の場所に覚えておく。
FD_WRITE が来たら、覚えておいたデータを改めて送信する。
そのときも、送りきれないと WOULDBLOCK が返ってくるので、再び FD_WRITE が来るまで残りのデータをどこかに覚えておく。

ファイルを読み込んで送るだけなら、データを丸ごと覚えなくてもファイルの現在位置を覚えるだけで充分かもしれないが。

あと、send は渡したデータをすべて送信できる保証はない。
例えば send(sock, buf, 100, 0) とやっても、1バイトしか送信できない場合もある。
何バイト送信できたか戻り値が返ってくるので、送れなかった残りのデータはもう一度送り直す必要がある。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4336日前に更新/263 KB
担当:undef