Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi, ich versende und empfange Daten über einen Socket.

Dazu verwende ich die Funktionen send() und recv() in Visual C++.

Beim Senden ist alles ok.

Nur beim Empfangen "wartet sich der Server tot", weil er keinen Timeout bekommt.

Weiss jemand, wo ich ihm einen Timeout setzen oder einstellen kann????

Geschrieben

Da gibts zwei klassische Methoden (ich bin mir aber nicht sicher ob auch beide unter Windows laufen).

Du setzt den Empfangssocket mit fcntl(2) auf "nonblocking", dann kehrt recv immer zurueck (mit dem return-Wert -1 und errno auf EAGAIN wenn keine Daten vorhanden sind).

Die zweite Methode (ein select-loop) sollte auch unter Windows laufen. Du klapperst Deine Sockets mit select(2) ab, um zu ueberpruefen, ob Daten vorhanden sind. Bei select kannst Du auch einen Timeout mit angeben. Ein einfaches Beispiel habe ich nicht zur Hand, aber schau Dir doch mal die folgenden Seiten an:

http://www.erlenstar.demon.co.uk/unix/faq_3.html#SEC26

http://www.lowtek.com/sockets/select.html

Nic

PS:

Select gehoert zur socket-API und sollte daher auch unter Windows vorhanden sein.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...