Tôi tự hỏi nếu có một cách dễ dàng để lặp qua fd_set? Lý do tôi muốn làm điều này là không phải lặp qua tất cả các ổ cắm được kết nối, vì select() thay đổi các fd_sets này để chỉ bao gồm những cái mà tôi quan tâm. Tôi cũng biết rằng việc sử dụng loại triển khai không có nghĩa là được truy cập trực tiếp thường là một ý tưởng tồi vì nó có thể khác nhau trên các hệ thống khác nhau. Tuy nhiên, tôi cần một số cách để làm điều này, và tôi đang hết ý tưởng. Vì vậy, câu hỏi của tôi là:Làm thế nào để lặp qua một fd_set
Làm cách nào để lặp qua fd_set? Nếu đây là một thực tế tồi tệ, có cách nào khác để giải quyết "vấn đề" của tôi ngoại trừ từ looping thông qua tất cả các ổ cắm được kết nối?
Cảm ơn
Để nhấn mạnh ý của tôi. Tôi không muốn sử dụng phương pháp FD_ISSET vì nó yêu cầu tôi lặp qua tất cả các ổ cắm được kết nối. Nhưng vì, theo định nghĩa, select() loại bỏ các mô tả tệp không liên quan khỏi tập hợp, tôi muốn lặp qua bộ này. – Andreas
Nó không nhất thiết có nghĩa là "tất cả các kết nối". Bạn có thể vượt qua một tập hợp con của các ổ cắm được kết nối của bạn để chọn và sau đó sử dụng FD_ISSET chỉ trên tập hợp con đó sau khi chọn trả về. Ngoài ra, có một vấn đề thực tế với looping trên tất cả chúng? Trừ khi bạn đang đối phó với hàng ngàn ổ cắm được kết nối, vòng lặp sẽ có thể mất một khoảng thời gian không quan trọng. – Rakis
Đồng ý với Rakis. Đây là một trong những điều mà dường như không hiệu quả nhưng trong hầu hết các trường hợp thực sự không phải là Thời gian để đi qua vòng lặp sẽ được dwarfed bởi thời gian cần để phục vụ chỉ là một trong những FDs thiết lập. – Duck