accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

socket, select, timeout

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.os.unix ] 

Retour : Accueil du site fr comp os unix   charte stats de ce groupe


  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


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)