既に達成したマルチスレッドとは対照的に、select() を使用して複数のクライアントを処理するサーバーを作成しようとしています。ただし、 select() は何もしていないようです? 私はすべての必要なシステム コールを持っています。bind() から listen() まで、すべて適切なエラー チェックが行われ、問題は返されません。また、問題なくコンパイルされます。
FD_ZERO(&fileDescriptors);
FD_ZERO(&tempSet);
.....
FD_SET(listener, &fileDescriptors);
fdmax = listener;
.....
while(1){
if(select(fdmax+1, &tempSet, NULL, NULL, &timeout) == -1){
//error occured
}
.....
}
クライアントは接続を確立できませんが、WSAGetLastError() はクライアント側で 0 を返します。また、サーバーは、タイムアウトのために 0 を返すことを除けば、決して select() を渡されません。私のコードで問題を確認するのに本当に苦労しています。