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

  FORUM HardWare.fr
  Programmation
  C

  reconnexion socket

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

reconnexion socket

n°1795270
sonick
Posté le 03-10-2008 à 14:52:39  profilanswer
 

Salut,
je développe un client réseau en C, avec des sockets donc. J'essaye de régler le problème des déconnexions réseau (pouvoir me reconnecter automatiquement après une déconnexion).
J'ai procédé comme suit :  
- détection d'une erreur lors d'un send/recv
- boucle infinie tant que la socket n'arrive pas à se reconnecter
 
Voici concrètement le bout de code correspondant :
 

Code :
  1. int is_connected = 1;
  2. if(send(s, "19NEV", (int)strlen("19NEV" ), 0)<(int)strlen("19NEV" ))
  3. {
  4. #ifdef DEBUG
  5.  printf("__cmd_19NEV__Connection to socket lost, trying to reconnect...\n" );
  6. #endif
  7.  is_connected = 0;
  8.  shutdown(s, SD_SEND); //closes socket
  9.  closesocket(s); //free the socket
  10.  while(!is_connected)
  11.  {
  12. #ifdef DEBUG
  13.   printf("__cmd_19NEV__Connection to socket failed. Trying again...\n" );
  14.   printf("connect au serv = %i",connect(s, (SOCKADDR *)&server, sizeof(server)));
  15. #endif
  16.   if (connect(s, (SOCKADDR *)&server, sizeof(server)) != SOCKET_ERROR)
  17.   {
  18.    printf("nb car env = %i",send(s, "19NEV", (int)strlen("19NEV" ), 0)==(int)strlen("19NEV" ));
  19.    if(send(s, "19NEV", (int)strlen("19NEV" ), 0)==(int)strlen("19NEV" ))
  20.    {
  21.     is_connected = 1;
  22.    }
  23.   }
  24.   Sleep(1000);
  25.  }
  26. #ifdef DEBUG
  27.  printf("__Connection successful\n" );
  28. #endif
  29. }


 
Mais ma socket n'arrive pas à se connecter (connect() renvoie toujours -1)
 
Vous voyez un problème ?

mood
Publicité
Posté le 03-10-2008 à 14:52:39  profilanswer
 

n°1795375
tpierron
Posté le 03-10-2008 à 16:43:16  profilanswer
 

Heu, quand tu fais ton closesocket(s), la variable s n'est plus utilisable après ça. Il va falloir repartir de zéro, avec un:
 

Code :
  1. s = socket(AF_INET, SOCK_STREAM, ...


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

  reconnexion socket

 

Sujets relatifs
Python : Ouverture d'une socket TCP[PERL] Lecture bufferisé sur socket
Double socketsocket
[PHP]Recuperer l'ip d'un client connecté sur un serveur socket.Problème Socket Bluetooth
Socket multicastprobleme de socket c/java
Socket communication Appli Client/ServeurPB socket C et fcntl()
Plus de sujets relatifs à : reconnexion socket


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