Kann man poll() nicht mehrfach danach fragen ob Daten vorliegen?



  • Hi,

    ich implementiere gerade einen Server (auf UDP) und als Hilfsfunktion habe ich eine Funktion geschrieben welche n Bytes vom Socket liest und einen maximalen Timeout dafür hat.
    Nun benutze ich for jedem recvfrom Aufruf poll() um zu schauen ob Daten gelesen werden können. In meinem Test rufe ich die Funktion zwei mal auf um 5 Bytes zu lesen, der erste Aufruf klappt, aber beim zweiten Aufruf liefert poll immer 0 zurück (=timeout abgelaufen ohne, dass etwas da ist), obwohl ich mit netcat einen größeren String an den Server schicke.

    Liegt das nun an poll(), oder werden die Daten einfach so schnell wieder verworfen? OS ist Linux.

    Danke.



  • Ok, manchmal sollte man einfach ein klein wenig warten mit dem Posten. Gerade eben habe ich herausgefunden, dass recvfrom die ausstehenden Daten verwerfen darf, wenn ich nicht alles auslese.
    Gibt es eine Möglichkeit das zum umgehen?


Anmelden zum Antworten