KMochidaと申します。ソケットプログラミングを学習しています。
疑問があります。

サーバ側ではディスクリプタsocにパケットが届いているかをチェックする為に、
int n;
fd_set mask;
FD_ZERO(&mask);
FD_SET(0,&mask);
FD_SET(soc,&mask);
select(soc+1,&mask,NULL,NULL,NULL);
n=FD_ISSET(soc,&mask);

として返値nを吟味する事でsocにパケットが届いているかを知る事が出来るのですよ
ね。
つまり、

$ ulimit -a | grep max
max user processes            (-u) 63

の場合、上記のコードは

mask.fds_bits[1]、mask.fds_bit[0]、の64ビット分を「0」にする。
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000
↓
0番ディスクリプタとsoc番ディスクリプタを「1」にする。
(下記例はsocの評価値が「4」の場合)
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
0001
↓
0番ディスクリプタ〜soc番ディスクリプタにパケットが届いているかを調査する。
届いているディスクリプタ(ビット目)だけ「1」にして、届いていないものは全て
「0」に書換える。
(例 4番ディスクリプタのみに届いている場合は
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
0000
0番ディスクリプタのみに届いている場合は
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0001
3番ディスクリプタのみに届いている場合は
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
1000)
↓
実際に4番ディスクテリプタに届いているかの判定は最後にFD_ISSET関数の返値に
よって知りうる事ができる。
nの値が「1」ならsocディスクリプタにパケットが届いている。「0」なら届いていな
い。

という具合の処理になるのですよね?
(勘違いしてましたら、ご指摘ください)

としますと
FD_ZERO(&mask);
FD_SET(0,&mask);
FD_SET(soc,&mask);
は不要なんじゃないでしょうか?

select(soc+1,&mask,NULL,NULL,NULL);
n=FD_ISSET(soc,&mask);

だけで十分なような気がするのですが、勘違いしてましたら、ご指摘ください。