Bonjour,
Je viens de créer mon premier code utilisant les sockets (presque entièrement pompé sur le tuto de The Walrus) et celui ci ne fonctionne pas :-(
Voici le code 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
#include <iostream>
#include <winsock2.h>
 
int main()
{
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,0), &WSAData);
    SOCKET sock;
    SOCKADDR_IN sin;
    char *buffer = new char[255];
    sock = socket(AF_INET, SOCK_STREAM, 0);
    sin.sin_addr.s_addr			= inet_addr("127.0.0.1");
    sin.sin_family				= AF_INET;
    sin.sin_port				= htons(4148);
    connect(sock, (SOCKADDR *)&sin, sizeof(sin));
    recv(sock, buffer, sizeof(buffer), 0);
    closesocket(sock);
    WSACleanup();
    std::cout << buffer[0] << std::endl;
    system("PAUSE");
}
Et le 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
 
#include <winsock2.h>
 
int main()
{
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,0), &WSAData);
    SOCKET sock;
    SOCKET csock;
    SOCKADDR_IN sin;
    SOCKADDR_IN csin;
    sock = socket(AF_INET, SOCK_STREAM, 0);
    sin.sin_addr.s_addr			= INADDR_ANY;
    sin.sin_family				= AF_INET;
    sin.sin_port				= htons(4147);
    bind(sock, (SOCKADDR *)&sin, sizeof(sin));
    listen(sock, 0);
    for(;;)
    {
        int sinsize = sizeof(csin);
        if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
        {
            send(csock, "Hello world!\r\n", 14, 0);
        }
    }
}
Je lance les 2 programmes sur ma machine (en commençant par le seveur) et la chaine que le client doit afficher est remplacée par d'autres caractères (toujours les mêmes).
Je ne trouve pas mon erreur.
Merci