• 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 2015-2016

PR6 – Programmation réseaux

TP n

o

6 : Clients et Serveurs TCP en C

En C, tout est bas-niveau, c’est-à-dire que contrairement à Java, beaucoup de choses sont à faire “à la main”. Voici un rappel des principales fonctions C que nous utiliserons.

Les prototypes des fonctions supplémentaires nécessaires se trouvent dans les fichiers en- tête 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 qui se connecte au servicedaytimetournant surlucien.

Le client doit également afficher l’adresse IP de lucien. On proposera deux implémenta- tions, une utilisant la fonctiongethostbynameet l’autre utilisant la fonctiongetaddrinfo.

Exercice 2 : Discussions entre serveurs Java et C

On souhaite programmer deux entités discutant via TCP entre elles. Chacune est liée à un port et à une machine. Le protocole est le suivant.

1. L’entité1 aura le comportement suivant.

– Elle ouvre un port et attend un message 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 elle ferme la connexion et se connecte à l’adresse IP donnée sur le port fourni.

– Elle envoie le message CONFIRM\n.

– Ensuite elle attend un message de la forme ACKCONFIRM\n.

1

(2)

L3 Informatique Année 2015-2016

– Sur réception de ce message, elle termine en fermant la connexion.

2. L’entité2 aura le comportement suivant.

– Elle envoie un message adresse_ip port\n avec son adresse et un numéro de port à l’entité 1.

– Elle ferme la connexion.

– Elle attend un message sur son adresse IPadresse_ip et sur son portportde la forme CONFIRM\n et

– elle répond avec un message de la forme ACKCONFIRM\n, puis – elle ferme 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

Écrire un programme qui prend 3 arguments fic, alire, pivot sur la ligne de commande, vérifie que fic est composé uniquement de chiffres et si c’est le cas, stocke dans une chaîne

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