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
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 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; }
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.
Partager