Bonjour à vous, j'essaye de faire un simple serveur/client, la connexion a l'air de se faire mais je galère un peu sur l'envoi et la réception du message, j'aimerais que quand le serveur voit un client se connecter il lui envoie un simple message de bienvenue. La question a déjà été posé mais malgré les différentes façons que j'ai essayé je n'y arrive pas du tout. Je n'arrive pas à rendre le client plus bavard afin de cibler le problème. Merci d'avoir pris le temps de lire et un double merci pour ceux qui essayeront de m'aider.

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
#include <iostream>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
int main()
{
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,0), &WSAData);
    SOCKET sock;
    SOCKADDR_IN sin;
    sin.sin_addr.s_addr	= inet_addr("127.0.0.1");
    sin.sin_family		= AF_INET;
    sin.sin_port		= htons(4148);
    sock = socket(AF_INET,SOCK_STREAM,0);
    std::string message = "Hello world";
    bind(sock, (SOCKADDR *)&sin, sizeof(sin));
 
    listen(sock, 0);
    int val = 0;
    while(1)
    {
        int sizeof_sin = sizeof(sin);
        val = accept(sock, (SOCKADDR *)&sin, &sizeof_sin);
        if(val != INVALID_SOCKET)
        {
            std::cout << "hello" << std::endl;
            send(sock, message.c_str(), sizeof(message.c_str()), 0);
        }
    }
 
 
    WSACleanup();
    return 0;
}

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
#include <fstream>
#include <iostream>
#include <cstdio>
#include <winsock2.h>
#include <typeinfo>
#pragma comment(lib, "ws2_32.lib")
 
using namespace std;
int main()
{
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,0), &WSAData);
    SOCKET sock;
    SOCKADDR_IN sin;
    char buffer[2048];
    sin.sin_addr.s_addr	= inet_addr("127.0.0.1");
    sin.sin_family		= AF_INET;
    sin.sin_port		= htons(4148);
    sock = socket(AF_INET,SOCK_STREAM,0);
    bind(sock, (SOCKADDR *)&sin, sizeof(sin));
 
    connect(sock, (SOCKADDR *)&sin, sizeof(sin));
 
    int message_recu = recv(sock, buffer, sizeof(buffer), 0);
    cout << buffer << endl;
    string commande = (string)buffer;
    cout << commande << endl;
 
 
 
    WSACleanup();
    return 0;
}