voila je souhaite creer un serveur et un client tcp/ip.
pour l'instant mon client et mon serveur communique bien entre eux (un message est transmis entre le client et le serveur) mais je souhaite que mon client fasse des requetes HTTP ( a la place de la transmission de "salut"), et que le serveur reponde a ces requetes mais je ne sais pas trop comment faire.
je vous donne ici le code de mon client et celui de mon serveur.
merci d'avance pour votre aide tres precieuse.

Mon 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
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
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <math.h>
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#define closesocket(s) close (s)
 
typedef int SOCKET;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr SOCKADDR;
typedef struct hostent *HOSTENT;
 
 
 
int main (int argc, char *argv[])
{
 
      int i;
      SOCKET sock;
    SOCKADDR_IN sin;
    HOSTENT remote_host;
    char buffer[32] = "";
 
           /* Création de la socket */
        sock = socket(AF_INET, SOCK_STREAM, 0);
 
        /* Configuration de la connexion */
         sin.sin_family = AF_INET;
 
    if ((remote_host = gethostbyname(argv[1])) == (HOSTENT *) NULL )
    {
        fprintf( stderr, "%s: unknown host: %s\n",argv[0], argv[1]);
        exit(__LINE__);
    }
 
    (void) bcopy( (char *)remote_host->h_addr, (char *) &sin.sin_addr,
remote_host->h_length );
    sin.sin_port = htons(atoi(argv[2]));
 
        /* Si le client arrive à se connecté */
        if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) != SOCKET_ERROR){
            printf("Connexion à %s sur le port %d\n", inet_ntoa(sin.sin_addr),
htons(sin.sin_port));
            /* Si l'on reçoit des informations : on les affiche à l'écran */
            if(recv(sock, buffer, 32, 0) != SOCKET_ERROR)
                printf("Recu : %s\n", buffer);
            }
        else
            printf("Impossible de se connecter\n");
 
 
 
        /* On ferme la socket précédemment ouverte */
        closesocket(sock);
 
 
    return EXIT_SUCCESS;
}
Mon 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
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#define closesocket(s) close(s)
 
 
typedef int SOCKET;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr SOCKADDR;
 
 
 
int main(int argc, char *argv[])
{
 
    //Socket et contexte d'adressage du serveur
    SOCKADDR_IN sin;
    SOCKET sock;
    char buffer[32];
    unsigned int recsize = (unsigned int) sizeof sin;
 
    // Socket et contexte d'adressage du client 
    SOCKADDR_IN csin;
    SOCKET csock;
    unsigned int crecsize = (unsigned int) sizeof csin;
 
    int sock_err;
    char buf[BUFSIZ];
    int read_ret;
 
           /* 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 = 0 ;               /* 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) */
                if ( getsockname(sock,(SOCKADDR *) &sin,(int*)&recsize ) < 0 )
                {
                char s[BUFSIZ];
                sprintf( s, "%s: can't get port number of socket (%d)",        argv[0], sock );
                perror(s);
                exit(__LINE__);
                    }
 
               sock_err = listen(sock, 5);
                printf("Listage du port %d...\n",ntohs(sin.sin_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", ntohs(sin.sin_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));
 
 
                sock_err = send(csock, buffer, 32, 0);
 
                    if(sock_err != SOCKET_ERROR)
                        printf("Chaine envoyée : %s\n", buffer);
                    else
                        printf("Erreur de transmission\n");
 
                 }
                 /* Il ne faut pas oublier de fermer la connexion (fermée dans les deux sens) */
                    shutdown(csock, 2);
 
 
                }
                else
                    perror("listen");
            }
            else
                perror("bind");
 
            while ( (read_ret = read( csock, buf, sizeof buf )) > 0 )
            {
                buf[read_ret]='\0';
                printf( "%s", buf ); 
            }
 
         if (read_ret == 0) {
          printf( "%s: connection closed by distant peer:\n", argv[0] );
            }
 
    if ( read_ret < 0 ) {
        char s[BUFSIZ];
        sprintf( s, "%s: error reading socket", argv[0] );
        perror(s);
        exit(__LINE__);
    } 
 
 
 
 
            /* 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");
 
    return EXIT_SUCCESS;
}