TCP Client unter Linux

fettyteddy

Grünschnabel
hallo!
ich habe einen Client geschrieben und das Senden und Empfangen über recv funktioniert ohne Probleme.
jetzt hab ich eine frage:
gibt es für den client auch sowas wie select() ? weil immer wenn ich mit recv() etwas empfangen will hängt das programm solang nix kommt =/ und da ich nicht dauernd was senden will das programm aber trotzdem weiterlaufen soll brauch ich da einen ausweg!

Sprache: c++
BS: Linux.

danke schonmal
 
Zuletzt bearbeitet:
Hallo,

ja gibt es. select ist ja unabhängig davon ob das nun auf Client- oder Serverseite eingesetzt wird. Bei deinem Client hast du ja auch einen Dateideskriptor von dem du liest und auf diesen kannst du select anwenden.
Desweiteren kannst du recv auch MSG_DONTWAIT als flag übergeben, somit kehrt recv sofort zurück.

siehe
Code:
man select
man recv

Dennoch denke ich das select bzw das flag nicht viel zur Lösung deines Problems beitragen, da du bei beiden ja trotzdem pollen musst bis etwas im Lesepuffer steht.

Versuch mal folgendes:
Mach einen Thread auf der deinen receiver darstellt und in welchem du dann deine Puffer mit den empfangenen Daten beschreibst. So tuts auch ein normal blockendes recv.

HTH,
RedWing
 
Zurück