Bonjour,

Je fais des tests avant de commencer un projet réseau.
J'ai un problème de communication entre mon serveur et mon client en mode TCP.
Mon client envoie un message avec send et mon serveur est censé le récupérer avec recv.

Voila le code coté 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
/* Ici création socket, bind, listen */

    // On écoute un client
    csock = accept(sock, (SOCKADDR *)&csin, &sinsize);
    if(csock == INVALID_SOCKET) {
        perror("accept()");
        exit(errno);
    }printf("Accepter...\n");


    // Reception d'une donnée
    printf("Attente d'un message client...\n");
    if((n = recv(sock, buffer, sizeof buffer - 1, 0)) < 0) {
        perror("recv()");
        exit(errno);
    }
    buffer[n] = '\0';
    printf("Message recu: %s\n", buffer);
Et coté 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
    SOCKET sock;
    struct hostent *hostinfo = NULL;
    SOCKADDR_IN sin = { 0 };
    const char *hostname = "192.168.0.5";
    char buffer[TAILLE_TAMPON] = "Ceci est un test de message.";
 
 
    // Création de la socket
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock == INVALID_SOCKET) {
        perror("socket()");
        exit(errno);
    }
 
 
    // On récupère les informations de l'hôte auquel on veut se connecter
    hostinfo = gethostbyname(hostname);
    if (hostinfo == NULL) { // L'hôte n'existe pas
        fprintf (stderr, "Unknown host %s.\n", hostname);
        exit(EXIT_FAILURE);
    }
 
    // On remplis la structure pour se connecter
    sin.sin_addr = *(IN_ADDR *) hostinfo->h_addr; /* l'adresse se trouve dans le champ h_addr de la structure hostinfo */
    sin.sin_port = htons(PORT); /* on utilise htons pour le port */
    sin.sin_family = AF_INET;
 
    if(connect(sock,(SOCKADDR *) &sin, sizeof(SOCKADDR)) == SOCKET_ERROR) {
        perror("connect()");
        exit(errno);
    }
 
 
    // Envoie d'une donnée
    if(send(sock, buffer, strlen(buffer), 0) < 0) {
        perror("send()");
        exit(errno);
    }
    printf("Message envoyer: %s\n", buffer);
La trace du programme donne coté serveur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
En ecoute...
Essai d'acceptation...
Accepter...
Attente d'un message client...
recv(): No error
 
Process returned 0 (0x0)   execution time : 24.203 s
Press any key to continue.
Et coté client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Message envoyer: Ceci est un test de message
Après test je voie que le retour du recv est -1 (n=-1).
Comment résoudre/diagnostiquer le problème ?

Merci.