Salut tout le monde, je viens à peine da apprendre les bases du C.

J'ai lu le Tutoriel de TheWalrus sur les sockets en C/C++.

La théorie c'est bien, mais la pratique c'est important, et c'est de là que provient mon problème, comment pratiquer ce qu'on apprend sur les Sockets si on a pas deux PC!.

J'ai pensé à créer un serveur et un client, tout deux sur mon PC. Et le serveur envoie un message au client.

Le 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
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
 
#pragma comment(lib, "ws2_32.lib")
 
int main(int argc, char *argv[])
{
  char buffer[255]="";
 
  WSADATA WSAData;
  WSAStartup(MAKEWORD(2,0), &WSAData);
  SOCKET sock;
  SOCKADDR_IN sin;
  sin.sin_addr.s_addr = htons("127.0.0.1");
  sin.sin_family = AF_INET;
  sin.sin_port = htons(4111);
  sock = socket(AF_INET, SOCK_STREAM, 0);
 
  connect(sock, (SOCKADDR *)&sin, sizeof(sin));
  recv(sock, buffer, sizeof(buffer), 0);
  printf("%s\n", buffer);
 
  closesocket(sock);
  WSACleanup();
  system("PAUSE");	
  return 0;
}
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
 
 
int main(int argc, char *argv[])
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
 
 
int main(int argc, char *argv[])
{
  // Initiantion de WSAStartup
  WSADATA WSAData;
  WSAStartup(MAKEWORD(2,0), &WSAData);
 
  // Création du Socket
  SOCKET sock;
  SOCKET csock;
  SOCKADDR_IN sin;
  SOCKADDR_IN csin;
  sin.sin_addr.s_addr = INADDR_ANY;
  sin.sin_family = AF_INET;
  sin.sin_port = htons(4111);
  sock = socket(AF_INET, SOCK_STREAM, 0);
  bind(sock, (SOCKADDR *)&sin, sizeof(sin));
 
  // Ecout
  listen(sock, 0);
  while (1)
  {
        int sinsize = sizeof(csin);
        if(csock = accept(sock, (SOCKADDR *)&csin, &sinsize) != INVALID_SOCKET)
        {
                 send(csock, "Hello world!\r\n", 14, 0);
        }
  }
 
  // Nettoyage de WSA
  WSACleanup();
  system("PAUSE");	
  return 0;
}
Ensuite, je compile les deux, et je les lance (Mon FireWall m'averti et j'accepte et tout). Et puis, j'attends que le client affiche quelque chose, et là, rien!

Pouvez vous trouver d'ou provient le problem ?