|
C-/C++-Quelltext
|
1
|
unsigned int ret = select (...);
|
... was ist daran wohl falsch?
Wenn jetzt das select eine -1 liefert, wird daraus ein 2^32-1 und das ist DEUTLICH größer als 1.
Wenn aber select einen Fehler gemeldet hat, werden auch die fd_sets nicht modifiziert und m_acceptSocket bleibt drin stehen, obwohl dort keine Daten anliegen.
Ergo: accept wird aufgerufen und blockiert logischerweise.
Bei mir gibt's einen select Fehler, weil der Client die Verbindung sofort nach dem Connect wieder schließt. Damit ist in der Liste ein ungültiger Socket, und select meckert.
Achso, die Auflösung ist natürlich:
|
C-/C++-Quelltext
|
1
|
int ret = select (...);
|