begin process at 2012 05 30 13:55:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Réseau & Internet

 > 

[C] Un timeOut sur Socket en détails [Linux]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[C] Un timeOut sur Socket en détails [Linux]

jeudi 1 juin 2006 à 16:36:59 | [C] Un timeOut sur Socket en détails [Linux]

ZedMaTrix

Salut a tous.

Bon j'ai pas mal cherché sur le site, et appart des débuts de réponses, je n'ai rien trouvé qui m'ai aidé à résoudre ce problème de TimeOut sur un connect() ou un Read().

Moi pour le read(), j'ai créé une boucle while pour essayer de faire une gestion du timeout, mais bon, c'est pas terrible.

Bref, malgret tout mes essaies ( y en pour quelques nuits tout de même ) j'arrive pas à trouver la manière de faire un timeout digne de ce nom.


Ma question : Aurriez vous des exemples de code qui gére un timeout avec des explications si possible ?

Je vous remercie par avance pour le temps que vous m'accorder

ZedMaTriX
jeudi 1 juin 2006 à 16:48:51 | Re : [C] Un timeOut sur Socket en détails [Linux]

ben92600

regarde si select pour t aider il permet de faire des lecture non bloquante
jeudi 1 juin 2006 à 18:27:03 | Re : [C] Un timeOut sur Socket en détails [Linux]

ZedMaTrix

Ok, ca c'est la réponse que l'on voie partout, mais sinon, tu n'as pas un exemple, pour m'aider ???

Parcque on voie partout select, select, select, mais ca m'aide pas !


Merci beaucoup

ZedMaTriX
jeudi 1 juin 2006 à 18:35:29 | Re : [C] Un timeOut sur Socket en détails [Linux]

ben92600

dsl je ne les jamais utiliser mais je connais son fonctionnement
si non la deuxieme solution ce son les termcaps avec le mode canonique ... mais tres casse tete a utilise
jeudi 1 juin 2006 à 19:52:29 | Re : [C] Un timeOut sur Socket en détails [Linux]

ZedMaTrix

Ok, merci c'est pas grave. Sur un autre forum on m'as donné ce lien qui est ma fois super interessant !

[ Lien ]

ZedMaTriX
vendredi 2 juin 2006 à 01:06:05 | Re : [C] Un timeOut sur Socket en détails [Linux]

ZedMaTrix

La je lutte un peu ...

Pourriez vous m'aider ?

Voila mon code :

    /* Passe la socket en mode non bloquant */
    fcntl(fdSock, F_SETFL, O_NONBLOCK);
           
    // Connexion du socket au serveur
    connect (fdSock,(struct sockaddr *)&maPrise,sizeof(maPrise));
   
    FD_ZERO(&fSTO);
    FD_SET(fdSock, &fSTO);
   
    ret = select(1, &fSTO, NULL, NULL, &tempLimit);
   
   
    if ( ret == -1 )
    {
           
        perror ("Echec à la connexion : ");
           
        // Ferme la socket
        close(fdSock);
           
        // Quitte
        return 1;
       
    } else if ( ret == 0 )
    {
       
        printf(" Connecté ");
           
    }


J'ai donc déclaré et remplis la struct timeval en donnant 5 pour les secondes.
J'ai aussi fais le fd_set fSTO;

Please, aider moi !

ZedMaTriX
vendredi 2 juin 2006 à 08:55:42 | Re : [C] Un timeOut sur Socket en détails [Linux]

AlexN

Salut,

Une première solution semble être expliquée ici
Cependant, il semble qu'il y ait des soucis avec linux... (man 7 socket)
SO_RCVTIMEO et SO_SNDTIMEO
Indiquent le délai maximal d'émission ou de réception avant de renvoyer une erreur. Sous Linux ces valeurs sont fixées dans les protocoles et ne peuvent être ni lues ni modifiées. Leurs fonctionnalités peuvent être émulées à  l'aide de alarm (2) ou setitimer(2).

Tu peux émuler un timeout avec alarm(). C'est un peu barbare, mais cela fonctionnera si connect() est bloquant en mode interruptible. Ce que je n'ai pas vérifié.

Exemple :

//Tu mets en place un gestionnaire de signal pour capter SIGALRM :
MyAlarm (int sig) { return ; /* Juste pour provoquer la sortie du mode bloquant */ }

// Tu laisses la socket en mode bloquant

MyConnect () {

            alarm(3) ; /* délai d'attente de 3 secondes */

            ret = connect(.) ;

            if ( ret != 0 ) {

            switch (errno) {

case EINTR : /* timeout réalisé */

.

}

}

}


vendredi 2 juin 2006 à 09:36:39 | Re : [C] Un timeOut sur Socket en détails [Linux]

ben92600

je crois que tu te trompe un de mes binome a utiliser la fonction select sur l un de nos projet et nous arrivions bien a regle le time et pourtant nous etions sur netbsd ... donc je pense que c'est tout a fait possible aussi sur linux
vendredi 2 juin 2006 à 10:23:00 | Re : [C] Un timeOut sur Socket en détails [Linux]

AlexN

Possible. Je n'ai pas vérifié, juste lu. Si tu peux lui poster la solution de ton binôme, cela pourrait peut être l'aider.
vendredi 2 juin 2006 à 16:07:15 | Re : [C] Un timeOut sur Socket en détails [Linux]

ZedMaTrix

Ouais, s'il te plait ben 92600, ca m'interesserai !

ZedMaTriX

1 2 3

Cette discussion est classée dans : linux, socket, read, timeout, détails


Répondre à ce message

Sujets en rapport avec ce message

Timeout et Socket [ par epoc ] Est-ce que qqun sait comment gérer un timeout sur un socket? (Sans passer par un timer si possible.)Merci :-D Problème de socket UDP sous linux [ par RaygKross ] Salut à tousMon problème est je dois créer un programme manager snmpLes port de SNMP sont 161 et 162J'initialise ma structure de type sockaddr_in avec socket raw sous linux [ par gpg ] quelqu'un aurait-il un petit exemple de programmation de socket raw sous linux SANS librairies additionelle (C/C++ brut) faire un timeout avec une socket TCP sur un connect() [ par bobijoe ] Salut tout le monde,ca fait pas mal de temps que je me lutte pour faire un timeout sur une demande de connexion TCP.En clair je voudrais pouvoir arret gestion des event avec WSANETWORKEVENTS [ par Spiffou ] bonjour à tous,je voudrais votre avis sur la gestion des evenements sur les sockets.je réalise une application (un jeu) qui doit communiquer sur un ré Etat Socket Linux [ par cybermax62 ] Existe-t-il un moyen de connaître sur un server (socket,C) l'état d'un connection client (socket,C) utilisant le protocole SOCK_STREAM ? Actuellement Timeout pour Socket [ par Oeil_de_taupe ] Bonjour les programmeurs, Je suis en train de créer une DLL pour  rechercher des email sur un serveur POP3. Pour l'instant ma DLL ne fait que loguer socket linux windows [ par Aozora ] BOnjour j'aurai voulu savoir s'il existait un code dans lequel je pourrais trouver un srveur windows et un client linux, me permettant de créer une so socket fonction read [ par surfeurnet ] Quelqu'un pourrait m'indiquer si la fonction read existe sous windows, si oui dans quel .h est-elle définie, si non existe-t-il une fonction équivalen Soket sous LINUX [ par diablo31170 ] Bonjour à tous le monde, comme le nom l'indique, cela va parler de soscket sous linux (en C++). Il aut savoir que je travaille en mode connecté. Je ch


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales