bonjour tout le monde !

J'ai comme projet de faire un programme répartissant des calculs sur plusieurs ordinateurs. J'ai fait un programme client et un programme serveur (pour l'instant aucune donnée ne transite entre les deux, c'est un simple test de niveau très basique).

Mon problème est le suivant: cela marche lorsque je démarre le client et le server sur mon ordi (en localhost) mais j'aimerais rendre cela possible en démarrant le server sur mon ordi et le client sur un autre ordi (voir plusieurs clients sur plusieurs ordi). Si quelqu'un avait une idée, merci d'avance !


Code du serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
#if defined (WIN32)
#include <winsock2.h>
#elif defined (linux)
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#define closesocket(s) close (s)
typedef int SOCKET;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr SOCKADDR;
#endif
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
    #if defined (WIN32)
        WSADATA WSAData;
        int erreur = WSAStartup(MAKEWORD(2,0), &WSAData);
    #else
        int erreur = 0;
    #endif
    SOCKADDR_IN sin = {0};
    SOCKET sock;
    int recsize = (int) sizeof sin;
    int sock_err;
    if(!erreur)
    {
        // Création d'une socket
        sock = socket (AF_INET, SOCK_STREAM, 0);
        // Si la socket est valide
        if (sock != INVALID_SOCKET)
        {
            printf ("La socket %d est maintenant ouverte en mode TCP/IP\n", sock);
            // Configuration
            sin.sin_addr.s_addr = *(IN_ADDR *)(INADDR_ANY);   // Adresse IP automatique
            sin.sin_family = AF_INET;              // protocol familial (IP)
            sin.sin_port = htons (23);       // listage du port
            sock_err = bind (sock, (SOCKADDR *) &sin, recsize);
            //Si la socket fonctionne
            if (sock_err != SOCKET_ERROR)
            {
                // démarrage du listage (mode server)
                sock_err = listen (sock, 5);
                printf ("Listage du port %d...\n", 23);
                //Si la socket fonctionne
                if (sock_err != SOCKET_ERROR)
                {
                    // Attente pendant laquelle le client se connecte
                    printf ("Patientez pendant que le client se connecte sur le port %d...\n", 23);
                    sock = accept (sock, (SOCKADDR *) &sin, &recsize);
                    printf ("Un client se connecte avec la socket %d de %s:%d\n", sock, inet_ntoa (sin.sin_addr), htons (sin.sin_port));
                    system("pause");
                }
            }
            // fermeture de la socket
            printf ("Fermeture de la socket\n");
            closesocket(sock);
            printf ("Fermeture du serveur terminée\n");
        }
        #if defined (WIN32)
            WSACleanup();
        #endif
    }
    return EXIT_SUCCESS;
}






code du client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
#if defined (WIN32)
#include <winsock2.h>
#elif defined (linux)
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#define closesocket(s) close (s)
typedef int SOCKET;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr SOCKADDR;
#endif
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
    #if defined (WIN32)
        WSADATA WSAData;
        int erreur = WSAStartup(MAKEWORD(2,0), &WSAData);
    #else
        int erreur = 0;
    #endif
    SOCKET sock;
    SOCKADDR_IN sin;
    char buffer[512] = "";
    int i;
 
    if(!erreur)
    {
        // Création de la socket
        sock = socket(AF_INET, SOCK_STREAM, 0);
        // Configuration de la connexion
        sin.sin_addr.s_addr = inet_addr("127.0.0.1");
        sin.sin_family = AF_INET;
        sin.sin_port = htons(23);
        // Si le client arrive à se connecté
        if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) != SOCKET_ERROR)
            {
              printf("Connexion à %s sur le port %d\n", inet_ntoa (sin.sin_addr), htons(sin.sin_port));
              system("pause");
            }
        else
            printf("Impossible de se connecter\n");
        // On ferme la socket précédemment ouverte
        closesocket(sock);
        #if defined (WIN32)
            WSACleanup();
        #endif
    }
    return EXIT_SUCCESS;
}


edit: même en remplacant 127.0.0.1 par l'ip de mon ordi dans le code du client, le client n'arrive pas à se connecter à mon ordi