68user's page 掲示板

Prev< No. 1615〜1616> Next  [最新発言に戻る] [過去ログ一覧]
No. 1615 # mak(spriggan) [E-mail] 2001/01/19 (金) 19:59:14
>>1591 68user
レスどもです。
ret = select( 64, &work_fdset, NULL, NULL, &time_out );
と指定していたので、ファイルディスクリプタ
0〜64までをチェックしかselectはチェックしていなかったので
selectはタイムアウトを返し、実際取得したファイルディスクリプタは
64を超えた数になっていたのでFD_ISSETは反応を返した。
というふうになっていた模様です。

ちなみに、ファイルディスクリプタの番号を
ここからここまでの番号しか取得しない。とか制限かける方法とか
ないのでしょうか?

No. 1616 # みかん(perlでソケットの質問してた方) 2001/01/19 (金) 22:41:30
レス遅くなってごめんなさい。
>>1525 68user
>2. 相手側がコネクションを切断したときも select は 1 を返します。
> その際、recv すると1バイトも読めず、0を返しているはずなのに

    コネクションが切断したときのselectの返り値、recvの返り値については
    このレスを見て初めて知りました。ありがとうございます。

>>1526 68user
>ついでに言っておくと、状況にもよりますが、select に
><> や read を使うのは不適切です。select で読み込み

    このサイトで紹介されているECHOサーバのように、「クライアントやサーバーとうま
    く接続できたかどうかを確認する」、というような形が正しいselectの使われ方だと
    考えてもいいですか?

    alarmを使う事でブロッキングを強引に回避するという方法がありますが、他に
    比較的OSに依存しない形でブロックを避ける手段はないでしょうか?

Prev< No. 1615〜1616> Next  [最新発言に戻る] [過去ログ一覧]