Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1783 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C TCP/IP] Gestion d'erreur sur un send

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C TCP/IP] Gestion d'erreur sur un send

n°1346960
xilebo
noone
Posté le 14-04-2006 à 15:30:28  profilanswer
 

Bonjour,
 
je suis confronté à un problème que je n'arrive pas à résoudre.
 
J'ai un appareil connecté à un autre en TCP-IP qui dialogue  sous forme de question réponse. Je fais un polling toutes les 2 secondes en envoyant un send, puis je fais un receive derriere. L'algo (simplifié) donne ca :
 
 

Code :
  1. while (connexion == true) {
  2.  send(socket,trame,trameLen,0);
  3.  t.tv_sec = 1;
  4.  t.tv_usec = 0; // 1000ms de timeout
  5.  fd_set ensemble;
  6.  FD_ZERO(&ensemble);
  7.  FD_SET(m_socket,&ensemble);
  8.  do {
  9.   valret = select(socket+1, &ensemble, 0, 0, &t);
  10.  } while (valret == SOCKET_ERROR && errno== EINTR);
  11.  if (valret == SOCKET_ERROR){
  12.   NetworkError("select" );
  13.  }
  14.  if(FD_ISSET(m_socket,&ensemble)!=0) { // des données sont recues
  15.   valret = recv(socket,data,1024,0);
  16.   if (valret== SOCKET_ERROR)  {
  17.    NetworkError("receive" );
  18.   }
  19.  }
  20. }


 
 
Le process fonctionne très bien. Seulement le second appareil peut etre coupé à tout moment et donc la connexion est rompue.
 
Sauf que ni send, ni select me renvoie un code d'erreur pour me dire que la connexion est rompue. Je sais que je recevrai mon code d'erreur comme quoi la connexion est rompue sur un appel à la fonction recv. Seulement, la fonction recv (d'après le code) ne sera appelée que si des données ont été recues (a cause de l'appel select).
 
Y a-t-il un moyen de tester si la connexion existe toujours autrement qu'avec un appel à la fonction recv ?
 
merci d'avance :)
 
 
 
 
 

mood
Publicité
Posté le 14-04-2006 à 15:30:28  profilanswer
 

n°1347147
nargy
Posté le 14-04-2006 à 19:46:25  profilanswer
 

utilise la fonction recvmsg()

n°1347148
nargy
Posté le 14-04-2006 à 19:47:55  profilanswer
 

utilise et vérifie le flag MSG_ERRQUEUE


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C TCP/IP] Gestion d'erreur sur un send

 

Sujets relatifs
erreur bizarreErreur de compilation
gestion de donnée récupérer sur d'autre classeurComment faire une gestion avancée d'erreurs de saisies
Probleme de compilation erreur, aider moi svpPB d'execution de classe, erreur lors de compilation etudiant en actio
[Solved] Erreur d'acces memoire a l'executionerreur (de débutant) dans un batch windows [Résolu]
erreur JXTAErreur de routine, quelqu'un peut me dire ou je boulette ?
Plus de sujets relatifs à : [C TCP/IP] Gestion d'erreur sur un send


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR