Boucle de connection client TCP

Résolu
Signaler
Messages postés
43
Date d'inscription
mercredi 30 novembre 2005
Statut
Membre
Dernière intervention
5 décembre 2008
-
Messages postés
43
Date d'inscription
mercredi 30 novembre 2005
Statut
Membre
Dernière intervention
5 décembre 2008
-
Bonjour à tous,

Mon dernier souci en date est de pouvoir créer une un client qui essaie de se connecter toutes les secondes.
Je fais donc une boucle avec la fonction connect mais lorsque j'execute mon server le client continu à tourner dans la boucle...
Pour l'instant, la seule solution que j'ai trouvé est de faire un autre programme qui exécute mon server toutes les secondes... pas terrible!

Voici mon code :

#include<stdio.h> 
#include<winsock2.h>
#include<string.h>





main()
{



    // VARIABLES : 

    WSADATA wsa;          
    SOCKET sock;      
    SOCKADDR_IN sin;
    char buffer[100];        
   
    // STYLE :

    system("color a");
    system("cls");
    system("TITLE TCP client by Ssmint");



    // Connection :
   
    WSAStartup(MAKEWORD(2,0),&wsa);
  
    sin.sin_family=AF_INET;
    sin.sin_addr.s_addr=inet_addr("127.0.0.1");
    sin.sin_port=htons(1234);
 
    sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);     
    bind(sock,(SOCKADDR*)&sin,sizeof(sin));
 
 while(connect(sock,(SOCKADDR*)&sin,sizeof(sin)))      // BOUCLE QUI MERDE!!!
 {                                               
      printf("\nServer shut down...\n");
      Sleep(1000);
         
 }



 printf("\nConnection : Ok\n");
 
 //ect...
}



Merci d'avance à bientôt..

5 réponses

Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
Salut,

essaye ca

#include<stdio.h>
#include<winsock2.h>
#include<string.h>

main()
{

// VARIABLES :

WSADATAwsa;
SOCKETsock;
SOCKADDR_INsin;
charbuffer[100];

// STYLE :

system("color a");
system("cls");
system("TITLE TCP client by Ssmint");

// Connection :

WSAStartup(MAKEWORD(2,2),&wsa);

sin.sin_family= AF_INET;
sin.sin_addr.s_addr=inet_addr("127.0.0.1");
sin.sin_port=htons(1234);

sock=socket(AF_INET,SOCK_STREAM,0);

while (connect(sock,(SOCKADDR*)&sin,sizeof(sin))! =0)// BOUCLE QUI MERDE!!!
{
printf("\nServer shut down...\n");
Sleep(1000);

}

printf("\nConnection : Ok\n");

//ect...
}

TuRn3r
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Pour simplifier ce qu'a mis turnerom, il ne faut que tu te serves de la fonction bind pour un client.
Par contre elle peut t'être utile pour ton serveur.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
(yoyo269) entre autre oui, bien que bind puisse être utilisé par un
client pour choisir le port local où binder la socket, mais c'est
souvent sans importance.

Puis dans la fonction socket, moi je met toujours le 3e argument à 0 ainsi que dans WSAStartup MAKEWORD(2,2)


Sinon petite question en passant, ton serveur est bien sur le même Pc et ecoute bien le port 1234 ???
La question peut paraitre bête mais ellle est souvent une cause de problèmes

TuRn3r
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Houla oui j'avais pas vu le coup de la version des sockets lancés. En effet c'est important de le souligner.
Merci turnerom de l'avoir préciser.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
43
Date d'inscription
mercredi 30 novembre 2005
Statut
Membre
Dernière intervention
5 décembre 2008

Ca marche nickel merci à vous.