SIGALRM Alternative für Win32
-
Hallo Forum,
habe folgendes Problem.
Ein Client verbindet sich zu einem Server. Der Server empfängt Daten vom Client und verabeitet diese weiter. Anschließend überträgt der Server ein Ergebnis zum Client zurück. Unter Umständen kann der Verarbeitungsvorgang aber zu lange dauern (per Definition). In diesem Fall soll der Client die Verbindung beenden. Auf das Ergebnis vom Server soll somit nach Ablauf eines Timouts nicht gewartet werden.
Unter Unix wird das über SIGALRM und sigaction() abgefangen.Wie erreiche ich das Gleiche unter Win32?
Vielen Dank im Vorraus.
NicoP.
-
Dieser Thread wurde von Moderator/in Shade Of Mine aus dem Forum ANSI C in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
hallo,
verwende setsockopt() ( TimeOut setzen ) direkt vor recv wenn der Client auf Antwort wartet, oder verwende ein select vor recv und übergebe dort den TimeOut Parameter.
Die Variante mit select ist auch portabel und unter UNIX anwendbar.
mfg
RB
-
Danke RED-BARON,
ein "Simples"
setsockopt(*psock, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout))
und schon war mein Problem erledigt!
Nochmals Danke!