timeout sur un recv(...) ca existe? [Resolu] - C++ - Programmation
Marsh Posté le 27-03-2003 à 11:42:31
ALARM(2) Manuel du programmeur Linux ALARM(2) |
Marsh Posté le 27-03-2003 à 11:47:53
Suis sous windows CE, merci quand meme.
Avec les timers y aurait pas moyen d'imaginer un truc?
Marsh Posté le 27-03-2003 à 11:58:47
polo021 a écrit : Suis sous windows CE |
alarm est POSIX! j'ai crû lire quelque part que les wins respectent la norme ...
Marsh Posté le 27-03-2003 à 11:59:31
polo021 a écrit : Suis sous windows CE, merci quand meme. |
avec un timer, a part un beau TerminateThread("ton thread ki fait des recv" ), je vois pas...
mais je penses plutot ke tu cherches a faire une sorte de recv() ki prenne un parametre temps t et qui quiterait apres t, mais la je vois encore moins... tu peux essayer de chercher du coté des sockets bloquantes ou non (j'ai l'impression ke ce genre de topic a deja été abordé...).
Marsh Posté le 27-03-2003 à 12:16:39
polo021 a écrit : Dans les sockets, il arrive parfois que le receive attende indefiniment, n'y aurait il pas moyen d'avoir un time out pour arreter le receive apres un certain temps? |
la solution est toute bete en fait : au lieu de faire des recv, tu fais un select, ki va te dire si qqchose est dans le nivo d'etre reçu. alors seulement dans ce cas tu fais un recv.
(le select prends comme parametre un timeout )
en fait il ne faut jamais faire de recv() sans que le select() ne t'ai dit qu'il y avait des données pretes a etre recues.
un bout de code vite fait ki peut correspondre :
Code :
|
voila, c juste un exemple tout bete.
En plus tu peux specifier plusieurs sockets dans le select, et savoir dans quelle socket faire le recv() grace a la macro FD_ISSET(Socket1, &input_set)).
regarde du coté des man : (en plus c pour Win CE)
http://msdn.microsoft.com/library/ [...] select.asp
Marsh Posté le 27-03-2003 à 11:13:03
Dans les sockets, il arrive parfois que le receive attende indefiniment, n'y aurait il pas moyen d'avoir un time out pour arreter le receive apres un certain temps?
Message édité par polo021 le 27-03-2003 à 12:28:14