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

Compte Rendu TP8

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 8

Compte rendu TP8

Ayoub Lahfas GR3

Exercice1 :

1. Implémenter l’exemple de programme Client/serveur


vue en cours en local qui va écouter votre port 4444, en
suite un client qui lui va se connecter sur le port 4444 de
votre server local.

Code coté serveur :

Code coté client :


2. Partager le point d’accès de votre Mobile (Téléphone) et récupérer l’adresse IP et
Numéro de Port du PC de votre collègue et connecter vous au Serveur de votre
collègue.

coté client :
Exercice2 :

Créer un programme client/serveur TCP sous Windows, le client tape "heure" pour
connaitre l'heure du serveur ou "date" pour connaitre la date. Sur le serveur on peut
sélectionner le N° de port qui servira de serveur, et sur le client on configure l'adresse
ip du serveur et le n° de port.

Code coté serveur :


#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")

#define BUFFER_SIZE 1024

int main() {

WSADATA wsa;

SOCKET serveur_socket, client_socket; struct sockaddr_in serveur, client; char


buffer[BUFFER_SIZE];int client_len, recv_size;

int port;

printf("Entrez le numero de port pour le serveur : ");

scanf("%d", &port);

printf("\nInitialisation de Winsock...\n");

if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {

printf("Echec de l'initialisation de Winsock !!! %d\n", WSAGetLastError());

return 1;

serveur_socket = socket(AF_INET, SOCK_STREAM, 0);

if (serveur_socket == INVALID_SOCKET) {

printf("Echec de la création du socket !!! %d\n", WSAGetLastError());

return 1;

printf("Socket cree avec succes.\n");


serveur.sin_family = AF_INET;

serveur.sin_addr.s_addr = INADDR_ANY;

serveur.sin_port = htons(port);

if (bind(serveur_socket, (struct sockaddr *)&serveur, sizeof(serveur)) ==


SOCKET_ERROR) { printf("Échec de la liaison du socket !!! %d\n", WSAGetLastError());

return 1;

printf("Socket lie au port %d.\n", port);

listen(serveur_socket, 3);

printf("En attente de connexions...\n");

client_len = sizeof(client);

client_socket = accept(serveur_socket, (struct sockaddr *)&client, &client_len); if


(client_socket == INVALID_SOCKET) {

printf("Echec de la connexion !!! %d\n", WSAGetLastError());return 1;

printf("Connexion acceptee.\n");

while ((recv_size = recv(client_socket, buffer, BUFFER_SIZE, 0)) != SOCKET_ERROR) {


buffer[recv_size] = '\0';

printf("Reçu : %s\n", buffer);

if (strcmp(buffer, "heure") == 0) {

time_t t = time(NULL);

struct tm *tm_info = localtime(&t);

char heure[20];

strftime(heure, 20, "%H:%M:%S", tm_info); send(client_socket, heure, strlen(heure), 0);

} else if (strcmp(buffer, "date") == 0) {

time_t t = time(NULL);
struct tm *tm_info = localtime(&t);

char date[20];

strftime(date, 20, "%d/%m/%Y", tm_info);

send(client_socket, date, strlen(date), 0);

} else {

char *msg = "Commande inconnue.";

send(client_socket, msg, strlen(msg), 0);

if (recv_size == SOCKET_ERROR) {

printf("Échec de la réception !!! %d\n", WSAGetLastError()); }

closesocket(client_socket); closesocket(serveur_socket); WSACleanup();return 0;

Code coté client :

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")

#define BUFFER_SIZE 1024

int main() {

WSADATA wsa;

SOCKET client_socket;

struct sockaddr_in serveur;

char buffer[BUFFER_SIZE];
char serveur_ip[20];

int port;

printf("Entrez l'adresse IP du serveur : ");

scanf("%s", serveur_ip);

printf("Entrez le numero de port du serveur : ");

scanf("%d", &port);

printf("\nInitialisation de Winsock...\n");

if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {

printf("Echec de l'initialisation de Winsock !!! %d\n", WSAGetLastError()); return 1;

client_socket = socket(AF_INET, SOCK_STREAM, 0);

if (client_socket == INVALID_SOCKET) {

printf("Echec de la création du socket !!! %d\n", WSAGetLastError()); return 1;}

printf("Socket cree avec succes.\n");

serveur.sin_family = AF_INET;

serveur.sin_addr.s_addr = inet_addr(serveur_ip);

serveur.sin_port = htons(port);

if (connect(client_socket, (struct sockaddr *)&serveur, sizeof(serveur)) < 0) {


printf("Echec de la connexion au serveu !!! %d\n", WSAGetLastError());

return 1;

printf("Connecté au serveur %s sur le port %d.\n", serveur_ip, port);

while (1) {

printf("\nEntrez une commande (\"heure\" ou \"date\", \"exit\" pour quitter) : ");


scanf("%s", buffer);

if (strcmp(buffer, "exit") == 0) {
break;

send(client_socket, buffer, strlen(buffer), 0);

int recv_size = recv(client_socket, buffer, BUFFER_SIZE, 0); if (recv_size ==


SOCKET_ERROR) {

printf("Échec de la réception !!! %d\n", WSAGetLastError()); break;

buffer[recv_size] = '\0';

printf("Reponse du serveur : %s\n", buffer); }

closesocket(client_socket); WSACleanup();

return 0;}

Vous aimerez peut-être aussi