• Aucun résultat trouvé

PR6 – Programmation réseaux TP no 6 : Clients et Serveurs TCP en C

N/A
N/A
Protected

Academic year: 2022

Partager "PR6 – Programmation réseaux TP no 6 : Clients et Serveurs TCP en C"

Copied!
2
0
0

Texte intégral

(1)

L3 Informatique Année 2014-2015

PR6 – Programmation réseaux

TP n

o

6 : Clients et Serveurs TCP en C

En C, tout est de bas-niveau, c’est à dire que contrairement au java beacoup de choses sont à faire “à la main”, et il sera important d’avoir l’API C bien en tête, en voici un petit rappel.

Les prototypes des fonctions supplémentaires nécessaires se trouvent dans les fichiers en- têtes suivants :

#include <sys/socket.h>

#include <netinet/in.h>

#include <netdb.h>

#include <arpa/inet.h>

Les fonctions principales sont :

int socket(int domaine, int type, int protocole);

int bind(int socket, const struct sockaddr *adresse, socklen_t longueur);

int listen(int socket, int attente);

int accept(int socket, struct sockaddr *adresse, socklen_t *longueur);

int connect(int socket, const struct sockaddr *adresse, socklen_t longueur);

int shutdown(int socket, int how);

int close(int socket);

ssize_t send(int socket,const void *tampon, size_t longueur,int options);

ssize_t recv(int socket,void *tampon, size_t longueur,int options);

struct hostent *gethostbyname(const char *name);

int getaddrinfo(const char *hostname, const char *servname, const struct addrinfo *hints, struct addrinfo **res);

Exercice 1 : Un client TCP pour daytime en C

Le but est d’écrire un client en C pour le servicedaytimetournant surlucienet affichant également l’adresse IP de lucien. On proposera deux implémentations, une utilisant la fonction gethostbyname et l’autre utilisant la fonction getaddrinfo.

Exercice 2 : Discussions entre serveurs Java et C

On souhaite programmer deux entités 1et2discutant via TCP entre elles et chacune liée à un port et une machine.

1. L’entité1aura le comportement suivant. Elle attendra un message d’un client sur son port. Ce message aura la forme suivante adresse_ip port\n oùadresse_ip est une chaînes de caractère représentant une adresse IP et port est une chaîne de caractères représentant un numéro de port. À la réception du message il ferme son serveur et il se connecte à l’adresse IP donnée sur le port fourni et envoie le message CONFIRM\n. Ensuite il attend un message de la forme ACKCONFIRM\n. Il finit en fermant la connexion.

1

(2)

L3 Informatique Année 2014-2015

2. L’entité2aura le comportement suivant. Elle enverra un messageadresse_ip port\n à l’entité 1. Elle fermera la connexion. Elle attendra un message sur son adresse IP adresse_ip et sur son portportqui aura la formeCONFIRM\n et elle répondra avec un message de la formeACKCONFIRM\n, puis elle fermera la connexion.

On vous demande de programmer ces deux entités en C et en Java et de les tester de façon croisée.

2

Références

Documents relatifs

Ce message aura la forme suivante : adresse_ip port\n où adresse_ip est une chaînes de caractère représentant une adresse IP et port est une chaîne de caractères représentant

Pour cela le client demande la définition d’un mot au serveur et celui-ci lui renvoie le texte obtenu par l’appel à l’utilitaire dict (voir man dict sur son terminal).. Si dict

Dans chacun des trois exercices ci-dessous, il s’agit d’écrire un serveur qui reçoit une image sous une certaine forme, la transforme en niveaux de gris et la renvoie sous une

Écrire un programme, ServeurMajuscule, représentant un serveur TCP itératif renvoyant les chaînes de caractères envoyées par des clients après les avoir mis en majuscule.. Le

Pour cela, faire en sorte que le serveur détermine le nombre à choisir lorsque qu’un client se connecte et qu’il n’y a à ce moment là pas de client connecté.. Tout client qui

L’idée est la suivante : un client producteur envoie au serveur une chaîne de caractères qu’il aura reçu par l’entrée standard (le clavier), le serveur stocke alors cette

Le protocole est élémentaire, le client se contente d’envoyer un mot au serveur qui lui renvoit la réponse sous la forme d’un texte constitué d’un nombre quelconque de lignes

S’il y a un tuteur de cette discipline disponible, le serveur renvoie au client l’identifiant de ce tuteur et le retire de la liste des tuteurs disponibles.. Sinon le serveur renvoie