lynxia Qui? Bah oui, bah...eh! ^^ | Merci
Sinon j'ai un petit souci, je n'arrive pas à établir de connexion entre mon serveur et mon client, pourtant je n'ai pas l'impression d'avoir oublié quelque chose...
Si vous auriez une idée...
Le code serveur:
Code :
- WSADATA WSAData; // Structure WSADATA definie dans Winsock
- int err; // Variable renvoyee par la fonction WSAStartup lors de l'initialisation de Winsock
- SOCKET sock; // Declaration de la variable sock de type SOCKET
- SOCKADDR_IN sin; // Structure SOCKADDR_IN qui contient les informations techniques du socket
- SOCKET csock ; // Declaration de la variable csock de type SOCKET
- int a = sizeof(sin); // Entier contenant la taille de la structure sin
- int main ( void )
- {
- printf("Attente de la connexion cliente...\n" );
- /***** Initialisation de Winsock *****/
- err = WSAStartup(MAKEWORD(2,2),&WSAData); // Initialisation
- if (err!=0) { // Test sur la variable renvoyee par la fonction WSAStartup
- printf("Initialisation de Winsock impossible, code erreur : %d\n",err,WSAGetLastError());
- }
- /***** Creation du socket et etablissement de la connexion *****/
- sock = socket(AF_INET, SOCK_STREAM, 0); // Creation du socket
- if (sock == INVALID_SOCKET){ // Test initialisation du socket
- printf("Creation du socket impossible, erreur : %d\n",WSAGetLastError()); // Affichage du code erreur
- }
- sin.sin_addr.s_addr = htonl (INADDR_ANY); // Adresse IP du client
- sin.sin_family = AF_INET; // Protocole IP
- sin.sin_port = htons(4444); // Port du serveur
- bind(sock, (SOCKADDR *)&sin,a); // Liaison d'une @ à un port
- listen(sock, 1); // Creation d'une file d'attente
- csock = accept(sock,(SOCKADDR*)&sin,&a) ; // Création d'un nouveau socket réservé au client
- printf("Connexion etablie\n" ) ;
|
La code client:
Code :
- WSADATA WSAData; // Initialisation de Winsock - Structure WSADATA definie dans Winsock
- int err;
- SOCKET sock; // Creation du socket - Declaration de la variable sock de type SOCKET
- SOCKADDR_IN sin;
- int main ( void )
- {
-
- /***** Initialisation de Winsock *****/
- err = WSAStartup(MAKEWORD(2,2),&WSAData); // Version 2 de Winsock
- if (err!=0) { // Test sur la variable renvoyee par la fonction WSAStartup
- printf("Initialisation de Winsock impossible, code erreur : %d\n",err,WSAGetLastError()); // Affichage du code erreur
- }
- /***** Creation du socket et etablissement de la connexion *****/
- sock = socket(AF_INET, SOCK_STREAM, 0);
- if (sock == INVALID_SOCKET){ // Test initialisation du socket
- printf("Creation du socket impossible, erreur : %d\n",WSAGetLastError()); // Affichage du code erreur
- }
- sin.sin_addr.s_addr = inet_addr("192.168.1.1" ); // Adresse IP du serveur
- sin.sin_family = AF_INET; // Protocole IP
- sin.sin_port = htons(4444); // Port sur lequel se connecter au serveur
- connect(sock, (SOCKADDR *) & sin, sizeof(sin)); // Connexion au serveur
- if (sock == SOCKET_ERROR) { // Test de la connexion au serveur
- printf("Erreur lors de la connexion : %d\n",WSAGetLastError()); // Affichage du code erreur
- }
|
Lorsque je définis l'adresse IP du serveur en local (127.0.0.1) ça fonctionne bien mais lorsque je teste vraiment à distance. J'ai l'impression que le serveur est en attente de connexion... |