socket, select, timeout
[ Nouvelle discussion
| Répondre au groupe
|
fr.comp.os.unix ]
Sujet: socket, select, timeout
De: watch....@stars.mw.invalid (fabrizio)
Groupes: fr.comp.os.unix
Organisation: Guest of ProXad - France
Date: 02. Apr 2008, 12:28:26
|
Bonjour,
Programme en C, compilé avec gcc. J'ai un comportement que je ne
parviens pas à expliquer avec l'appel select(..). Voilà en gros
l'algorithme :
//un descripteur "sock", créé avec socket(PF_INET, SOCK_DGRAM, ..)
//un jeu de descripteurs "set" qui ne contient que sock
while(condition) {
attente.tv_sec = 0;
attente.tv_usec = 100000;
int ret = select(sock+1, set, NULL, NULL, &attente);
if (ret < 0) perror(select);
if (ret == 0) {
printf("timeout\n");
continue;
}
printf("données dispo\n");
recv(sock, buffer, ..);
//utilisation des données
}
Cela fonctionne à merveille, sauf dans le scénario suivant :
1 - Démarrage émetteur
2 - Démarrage récepteur
données dispo
....
3 - Arrêt émetteur
timeout
....
4 - Démarrage émetteur
timeout
....
Tcpdump m'indique que les packets arrivent effectivement (sur le bon
port), mais select(..) continue à retourner un timeout.
Ce comportement est-il normal ?
Le cas échéant, quelle boulette ai-je pu faire ?
Toute idée est la bienvenue,
Fabrice

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|