2つの接続を受け付け、それぞれのソケットでファイルディスクリプタセットを作成し、それを選択に渡すコードがあります。しかし、selectが返ってくると、ファイルディスクリプタセット内のファイルディスクリプタの数は1に減らされ、selectはfd_array配列の最初のソケットの受信データを検出するだけです。ソケットセレクションでファイルディスクリプタセットのソケット数を減らす
私はどこを見なければならない?事前に
おかげで、選択機能のreadfds、writefdsおよびexceptfdsの偶然には、/アウト偶然にしている仕様です
アンドレ
fd_set mSockets; /* At this point mSockets.fd_count = 2 mSockets.fd_array[0] = 3765 mSockets.fd_array[1] = 2436 */ select(0, & mSockets, 0, 0, 0); /* At this point mSockets.fd_count = 1 mSockets.fd_array[0] = 3765 mSockets.fd_array[1] = 2436 */
実際、mSocketsはFD_ZEROとFD_SETを使用して同じように正しく設定されています。問題は、selectがfd_countフィールドを2から1に減らしていることです。なぜそれが起こっているのかわかりません。 –
ところで、このコードはWindowsマシン上で実行されています。 –