reconnexion socket

reconnexion socket - C - Programmation

Marsh Posté le 03-10-2008 à 14:52:39    

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 ?

Reply

Marsh Posté le 03-10-2008 à 14:52:39   

Reply

Marsh Posté le 03-10-2008 à 16:43:16    

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, ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed