Bonjour,

Je me suis lancer dans le tutoriel sur les socket.
J arrive a effectuer la connexion lorsque j execute le serveur et le client sur mon pc.Mais lorsque j essaye de lancer mon client sur le pc de mon pere (qui est en reseau avec le mien),la connexion ne s effectue pas!
(Je precise que suis sous xp et le pc de mon pere est sous vista )
Voici mon code :

Serveur:
Code : C

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
71
72
73
74
75
76
77
78
79
80
81
 
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#define PORT 23
 
typedef int socklen_t;
 
int main(void)
{
 
    WSADATA WSAData;
    int erreur = WSAStartup(MAKEWORD(2,2), &WSAData);
 
 
    /* Socket et contexte d'adressage du serveur */
    SOCKADDR_IN sin;
    SOCKET sock;
    socklen_t recsize = sizeof(sin);
 
    /* Socket et contexte d'adressage du client */
    SOCKADDR_IN csin;
    SOCKET csock;
    socklen_t crecsize = sizeof(csin);
 
    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 = htonl(INADDR_ANY);  /* Adresse IP automatique */
            sin.sin_family = AF_INET;                 /* Protocole familial (IP) */
            sin.sin_port = htons(PORT);               /* 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", PORT);
 
                /* 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", PORT);
                    csock = accept(sock, (SOCKADDR*)&csin, &crecsize);
                    printf("Un client se connecte avec la socket %d de %s:%d\n", csock, inet_ntoa(csin.sin_addr), htons(csin.sin_port));
                }
                else
                    perror("listen");
            }
            else
                perror("bind");
 
            /* Fermeture de la socket client et de la socket serveur */
            printf("Fermeture de la socket client\n");
            closesocket(csock);
            printf("Fermeture de la socket serveur\n");
            closesocket(sock);
            printf("Fermeture du serveur terminée\n");
        }
        else
            perror("socket");
 
            WSACleanup();
 
    }
 
    return EXIT_SUCCESS;
}
Et mon client:
Code : C
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
 
#include <stdio.h>    // printf
#include <conio.h>    // getch()
#include <winsock2.h>
#define PORT 23
 
void main()
{
	WSADATA WSAData;
	WSAStartup(MAKEWORD(2,0), &WSAData);
 
	SOCKET sock;
	SOCKADDR_IN sin;
	char buffer[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(PORT);
 
	connect(sock, (SOCKADDR *)&sin, sizeof(sin));
   	memset(buffer,0,255);
	recv(sock, buffer, sizeof(buffer), 0);
   	printf("%s",buffer);
   	getch();
	closesocket(sock);
	WSACleanup();
}
Merci.