• Aucun résultat trouvé

2ServeurenC 1ClientsenC TPn 6Programationr´eseauenC semestre Universit´eParisDiderot–Paris7Programmationr´eseauL3InformatiqueAnn´ee2011-2012,2

N/A
N/A
Protected

Academic year: 2022

Partager "2ServeurenC 1ClientsenC TPn 6Programationr´eseauenC semestre Universit´eParisDiderot–Paris7Programmationr´eseauL3InformatiqueAnn´ee2011-2012,2"

Copied!
1
0
0

Texte intégral

(1)

Universit´ e Paris Diderot – Paris 7 Programmation r´ eseau L3 Informatique Ann´ ee 2011-2012, 2

`eme

semestre

TP n

6

Programation r´ eseau en C

En C, tout est de bas-niveau, c’est ` a dire que contrairement au java beacoup de choses sont ` a faire “` a la main”, et il sera important d’avoir l’API C bien en tˆ ete, si n´ ecessaire, une documentation est disponible sur la page du cours.

Voici un petit rappel.

Les prototypes des fonctions suppl´ ementaires n´ ecessaires se trouvent dans les fichiers en-tˆ etes 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 closesocket(int socket);

ssize_t send(int socket,const void *tampon, size_t longueur,int options); ou sendto ssize_t recv(int socket,void *tampon, size_t longueur,int options); ou recvfrom struct hostent *gethostbyname(const char *name); int h_errno;

int getpeername(int socket, struct sockaddr *name, int *namelen);

1 Clients en C

Exercice 1 [Un client TCP pour daytime]

Ecrivez un programme C qui se connecte en TCP au service ´ daytime sur lucien en utilisant des sockets.

Indication : dans un premier temps vous pouvez utiliser l’adresse IP de lucien puis rajouter la r´ esolution du nom une fois que la premi` ere partie du client fonctionne.

Exercice 2 [Un client UDP pour daytime]

Refaites l’exercice pr´ ec´ edent en utilisant cette fois des sockets UDP.

2 Serveur en C

Exercice 3 [Un serveur pour daytime]

Faites un serveur qui simule le service daytime.

Remarque : Dans une prochain TD vous verrez comment faire un serveur parall´ elis´ e en C ` a l’aide des processus (fork). Ici le serveur fermera la connection ` a chaque r´ eponse.

1

Références

Documents relatifs

Un nombre entier naturel non nul n est dit parfait si la somme des diviseurs de n qui sont supérieurs ou égaux à 1 est égale au double de n. Par exemple, 6 est un

L’id´ee est la suivante : un client producteur envoie au serveur une chaˆıne de caract`eres qu’il aura re¸cu par l’entr´ee standard (le clavier), le serveur stocke alors

Lorsqu’il d´etermine que c’est n´ecessaire, le client SNTP envoie au serveur une requˆete sous forme d’un paquet UDP qui contient la date ` a laquelle ce message est transmis..

5. Client SMTP : Envoi de la commande DATA pour indiquer que le client va envoyer le contenu du mail. Pour marquer la fin de l’Email, le client enverra une s´equence sp´eciale

Lorsqu’il d´etermine que c’est n´ecessaire, le client SNTP envoie au serveur une requˆete sous forme d’un paquet UDP qui contient la date ` a laquelle ce message est transmis..

ssize_t send(int socket,const void *tampon, size_t longueur,int options); ou sendto ssize_t recv(int socket,void *tampon, size_t longueur,int options); ou recvfrom struct

Donner une primitive des fonctions suivantes, dont on pr´ ecisera les domaines de d´ efinition : 1.. Limite

Donner une primitive des fonctions suivantes, dont on pr´ ecisera les domaines de d´ efinition : 1... Limite