Bonsoir,

S'il vous plait, je voudrais créer un serveur et un client en C qui communiquent comme suit:
client ----(hello)---> serveur
serveur (attend 2 minutes)---(hello)--->client
client (attend 2 minutes)---(hello)---->serveur
etc... jusqu'à 15 minutes
Voici le code du client:

client.c
Code C : 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
 
 
int main (int argc, char *argv[]) { 
 
int socketclient,rc; 
int port, retour;
struct sockaddr_in localAddr, servAddr; 
struct hostent *h; 
char adresseserveurip[32]; 
char buffer[BUFFER_TAILLE]; 
 
printf("Entrez l'adresse IP ou le nom du serveur :"); 
scanf("%s", adresseserveurip); 
printf(" port :"); 
scanf("%d", &port); 
 
 
h = gethostbyname(adresseserveurip); 
if(h==NULL) { 
printf("%s: serveur inconnu '%s'\n",argv[0],adresseserveurip); 
exit(1); 
} 
 
 
servAddr.sin_family = h->h_addrtype; 
memcpy((char *) &servAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length); 
servAddr.sin_port = htons(port);
 
 
socketclient = socket(AF_INET, SOCK_STREAM, 0); 
if(socketclient<0) { 
perror("Probleme de creation de socket\n "); 
exit(1); 
}
//Connexion au serveur
rc = connect(socketclient, (struct sockaddr *) &servAddr, sizeof(servAddr)); 
if(rc < 0)
{ 
printf("Probleme de connexion\n"); 
exit(1); 
}
retour = read (socketclient, buffer, 32);
buffer[32] = '\0';
printf("\nMessage :%s. Nombre de caracteres lus = %d\n", buffer, retour);
close (socketclient); 
return 0; 
}
Voici le code du serveur:
Code C : 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
 
int creer_socket_serveur(int port)
 
 
 
{
int listen_fd;
struct sockaddr_in sin;
 
 
if ((listen_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) exit(1);
 
 
sin.sin_family = AF_INET;
sin.sin_port = htons(port);
sin.sin_addr.s_addr = INADDR_ANY;
 
 
if (bind(listen_fd, (struct sockaddr *)&sin, sizeof (sin)) == -1) exit(1);
 
 
listen(listen_fd, 5);
 
return (listen_fd);
}
 
 
 
main (int argc, char *argv[])
{
int port, so, client_sin_len, nb, socketserveur;
struct sockaddr_in client_sin;
char buffer[BUFFER_TAILLE]="Ceci est un exemple de socket!!!";
 
port=1111;
 
socketserveur = creer_socket_serveur(port); //Creation du serveur et socket
printf("Serveur pret ... En attente de requetes ...\n");
 
client_sin_len = sizeof (client_sin);
so = accept(socketserveur, (struct sockaddr *)&client_sin, &client_sin_len);
if (so == -1)
{
printf ("Probleme de creation d'une socket de traitement\n");
exit (1);
}
 
nb = write(so, buffer, sizeof (buffer));
printf("Transmission effectuee. Nombre de caracteres transmis = %d\n", nb);
close (so);
close(socketserveur);	
exit (0);
}

S'il vous plaît, où pourrais-je modifier dans le code pour que ça fonctionne?

Merci.