ネットワークプログラミング相談室 Port29at TECHネットワークプログラミング相談室 Port29 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト211:192 13/06/09 00:01:04.61 ちなみに、WinsockではデフォルトでFD_SETSIZE=64だが、 socket()は平気でこれより大きいfd番号を返してくる ていうか、現代のOSではLinuxだろうがWindowsだろうがFD_SETSIZEの制限に特に意味はなく、 FD_ISSET()の第一引数には 0..max{ socket()が返した値 } + 1 というの連番を与えるのではなくて、 socket()が返した数値(FD_SETSIZEより大きく成り得、かつ離散的)を配列かvectorにでもとっておいて、 その値を直接与えるのが正しいっぽい 上の現代版サンプルでもそうなっている(つまり>189のやり方は古い疑い有り) 212:デフォルトの名無しさん 13/06/09 07:07:01.75 何言ってるか分からないが、その現代版サンプル(謎)でも fd + 1 になってるじゃねーか 213:デフォルトの名無しさん 13/06/09 07:21:28.43 >>212 そこはそうだが、 http://x68000.q-e-d.net/~68user/net/c-echo-2.html における 166: for ( i=0 ; i<FD_SETSIZE ; i++ ){ 167: if ( FD_ISSET(i, &target_fds) ){ が、 http://www.v6pc.jp/jp/upload/pdf/socket-sample-20121203.pdf の「複数の socket を生成するデュアルスタック対応サーバプログラム」では for (i = 0; i < smax; i++) { if (FD_ISSET(s[i], &rfd)) { になってるねん(s[]にはsocket()が返した値が入っており、 smaxはs[]の要素数+1 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch