Ich frage mich, ob es eine einfache Möglichkeit gibt, ein fd_set zu durchlaufen? Der Grund dafür ist, dass ich nicht alle angeschlossenen Sockets durchlaufen muss, da select() diese fd_sets so ändert, dass nur diejenigen eingeschlossen sind, an denen ich interessiert bin. Ich weiß auch, dass die Verwendung einer Implementierung eines Typs, auf den nicht direkt zugegriffen werden soll, im Allgemeinen eine schlechte Idee ist, da sie über verschiedene Systeme hinweg variieren kann. Ich brauche jedoch eine Möglichkeit, dies zu tun, und mir gehen die Ideen aus. Also, meine Frage ist:Wie man durch ein fd_set iteriert
Wie iterate ich durch ein fd_set? Wenn das eine wirklich schlechte Übung ist, gibt es andere Möglichkeiten, mein "Problem" zu lösen, außer das Durchschleifen aller angeschlossenen Sockets?
Dank
Um zu betonen, was ich meine. Ich möchte den FD_ISSET-Ansatz nicht verwenden, da ich alle angeschlossenen Sockets durchlaufen muss. Da aber per definitionem select() nicht relevante Dateideskriptoren aus der Menge entfernt, möchte ich die Menge durchlaufen. – Andreas
Es bedeutet nicht unbedingt "alle verbunden". Sie können eine Teilmenge Ihrer verbundenen Sockets übergeben, um FD_ISSET für diese Teilmenge auszuwählen und anschließend zu verwenden. Gibt es auch ein Problem mit der Schleife über alle von ihnen? Wenn Sie nicht mit vielen Tausenden verbundener Sockets zu tun haben, wird die Schleife wahrscheinlich eine unwichtige Zeit in Anspruch nehmen. – Rakis
Stimmen Sie mit Rakis überein. Dies ist eines der Dinge, die ineffizient zu sein scheinen, aber in den meisten Fällen ist es wirklich nicht Die Zeit, um durch die Schleife zu gehen, wird von der Zeit, die es dauert, um nur eine der eingestellten FDs zu bedienen, in den Schatten gestellt. – Duck