0% ont trouvé ce document utile (0 vote)
12 vues4 pages

Client:: Nom:rouaz Prenom:sarah Spécialité: m2 Resin

Le document présente un exemple de communication entre un client, un serveur1 et un serveur2 à l'aide de sockets TCP et UDP. Le client envoie une requête au serveur1 qui la transmet au serveur2 via UDP, puis renvoie la réponse de ce dernier au client.

Transféré par

Sarah Rouaz
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
12 vues4 pages

Client:: Nom:rouaz Prenom:sarah Spécialité: m2 Resin

Le document présente un exemple de communication entre un client, un serveur1 et un serveur2 à l'aide de sockets TCP et UDP. Le client envoie une requête au serveur1 qui la transmet au serveur2 via UDP, puis renvoie la réponse de ce dernier au client.

Transféré par

Sarah Rouaz
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Nom:rouaz

Prenom:sarah
Spécialité: m2 resin

Client:
#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <arpa/inet.h>

int main() {

int client_socket = socket(AF_INET, SOCK_STREAM, 0);

struct sockaddr_in server_addr;

server_addr.sin_family = AF_INET;

server_addr.sin_port = htons(12345); // Port à utiliser, peut être modifié

server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // Adresse IP du serveur1

connect(client_socket, (struct sockaddr*)&server_addr, sizeof(server_addr));

// Envoyer une requête au serveur1

char request[] = "Demande de traitement";

send(client_socket, request, sizeof(request), 0);

// Recevoir la réponse du serveur1

char response[1024];

recv(client_socket, response, sizeof(response), 0);

printf("Réponse du serveur1 : %s\n", response);

close(client_socket);

return 0;

Serveur1:
#include <stdio.h>
#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <arpa/inet.h>

int main() {

int server1_socket = socket(AF_INET, SOCK_STREAM, 0);

struct sockaddr_in server1_addr

server1_addr.sin_family = AF_INET;

server1_addr.sin_port = htons(12345); // Port à utiliser, peut être modifié

server1_addr.sin_addr.s_addr = INADDR_ANY;

bind(server1_socket, (struct sockaddr*)&server1_addr, sizeof(server1_addr));

listen(server1_socket, 5);

int client_socket = accept(server1_socket, NULL, NULL);

// Recevoir la requête du client

char request[1024];

recv(client_socket, request, sizeof(request), 0);

printf("Requête reçue du client : %s\n", request);

// Contacter le serveur2 en utilisant UDP

int udp_socket = socket(AF_INET, SOCK_DGRAM, 0);

struct sockaddr_in server2_addr;

server2_addr.sin_family = AF_INET;

server2_addr.sin_port = htons(54321); // Port utilisé par le serveur2, peut être modifié

server2_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // Adresse IP du serveur2, à modifier


selon votre configuration

// Contacter le serveur2 en utilisant UDP

sendto(udp_socket, request, sizeof(request), 0, (struct sockaddr*)&server2_addr,


sizeof(server2_addr));

// Recevoir la réponse du serveur2 en utilisant UDP

char response_udp[1024];

recvfrom(udp_socket, response_udp, sizeof(response_udp), 0, NULL, NULL);

printf("Réponse du serveur2 reçue : %s\n", response_udp);

// Envoyer la réponse au client


send(client_socket, response_udp, sizeof(response_udp), 0);

// Fermer les sockets

close(udp_socket);

close(server1_socket);

close(client_socket);

return 0;

Serveur2:
#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <arpa/inet.h>

int main() {

int server2_socket = socket(AF_INET, SOCK_DGRAM, 0);

struct sockaddr_in server2_addr;

server2_addr.sin_family = AF_INET;

server2_addr.sin_port = htons(54321); // Port à utiliser, peut être modifié

server2_addr.sin_addr.s_addr = INADDR_ANY;

bind(server2_socket, (struct sockaddr*)&server2_addr, sizeof(server2_addr));

// Attendre la requête du serveur1 en utilisant UDP

char request[1024];

struct sockaddr_in server1_addr;

socklen_t addr_len = sizeof(server1_addr);

recvfrom(server2_socket, request, sizeof(request), 0, (struct sockaddr*)&server1_addr,


&addr_len);

printf("Requête reçue du serveur1 via UDP : %s\n", request);

// Traiter la requête

strcpy(buffer, "Traitement effectué par serveur2");

// Envoyer la réponse au serveur1 via UDP


char response[] = "Réponse du serveur2";

sendto(server2_socket, response, sizeof(response), 0, (struct sockaddr*)&server1_addr,


sizeof(server1_addr));

// Fermer le socket UDP

close(server2_socket);

return 0;

Vous aimerez peut-être aussi