Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Programmation Réseaux
- Appel d'un numéro et établissement de la communication par le client
- -Il faut préciser les numéros du destinataire (Serveur)
- -Il faut remplir une structure sock_addr_in avec les numéros du destinataire
- -Puis appeler la fonction d'établissement de communication qui dépend du protocole (UDP ou TCP)
- L'établissement de la communication par le client dans le cas d'UDP
- Pas d'établissement de connexion préalable, on envoie le premier paquet de donnée
- Fonction int sendto (int sock, char *data, int lg_data, struct sockaddr_in *p_ad_s, int flags, int lg-struct)
- Data: Les données tableau ou chaîne de caractères à envoyer
- lg_data: on précise leur longueur
- p_ad_s: structure contenant les numéros du destinataire
- Flags: non utilisé, à mettre à 0
- Retourne -1 s'il ya une erreur, sinon le nombre d'octets.
- Attente d'appel sur un téléphone: Cas du serveur avec UDP.
- -Comme pour le client il faut mettre en place la prise (socket) et lui affecter des numéros (bind).
- -Ensuite il faut se tenir prêt à recevoir des coups de fil des clients.
- -Dans le cas de UDP, cela se manifeste par l'envoi du premier paquet de donnée.
- La fonction int recvfrom (int sock, char *data, int lg_data, struct sockaddr_in *p_ad_s, int flags, int lg_struct)
- Data: le tableau (ou chaîne) de caractères reçu (rempli par la fonction)
- Lg_data: on précise leur longeur
- p_ad_s: structure qui est remplie par reccvfrom et qui contient les numéros du client qui vient d'envoyer ces données
- Retourne le nombre d'octet effectivement reçu, -1 s'il y a une erreur.
- L'établissement de la communication par le client dans le cas de TCP
- -Il y'a l'établissement d'une connexion préalable, les données seront envoyées ensuite
- -Fonction int connect (int sock, struct sockaddr_in p*_ad_s, int lg_struct)
- p_ad_s: structure contenant les numéros du destinataire.
- -Si l'établissement de la connexion par TCP est réussie, la fonction retourne 0 sinon -1.
- Attente d'appel sur un téléphone Cas du serveur avec TCP
- -Comme pour le client il faut mettre ene place la prise (socket) et lui affecter des numéros (bind)
- -Ensuite il faut se tenir prêt à recevoir des coups de fil des client
- -La fonction int listen (int sick, int nb_requete)
- sock: identificateir de la socket dont on renseigne précédemment les numéros
- nb_requete: nombre maximal de requête pouvant être mémorisé en attendant un traitement par le serveur.
- Acceptation d'un appel sur un téléphone: Cas du serveur avec TCP
- -Le serveur peut accepter une demande de communication sur une socket précedemment mise en attente (listen)
- -La fonction int accept (int sock, struct sockaddr_in *p_ad_s, int lg_struct)
- sock: identificateur de la socket en attente
- p_ad_s: Structure qui est remplie par recvfrom et qui contrient les numéros du client qui vient d'envoyer ces données.
- cette fonction est bloquante s'il n y a pas eu de demande de connexion de client
- ATTENTION: Elle retourne un nouvel identifcateur de socket mais portant les mêmes numéros (port et adresse).
- C'est sur cette nouvelle socket que peuvent se faire les échanges.
- On parle dans le téléphone: Cas de TCP
- -Une fois la connexion établie, le client peut envoyer et recevoir des données, le serveur aussi (après l'accept)
- La fonction int write (int sock, char *data, int lg_data)
- Data: Le tableau (ou chaîne) de caractères reçu (rempli par la fonction)
- Lg_data: on précise la taille du tableau
- Retourne le nombre d'octets effectivement envoyés, -1 s'il y a une erreur.
- La fonction int read (int sock, char *data, int lg_data)
- Data: Le tableau (ou chaîne) de caractères à envoyer
- Lg_data: on précise la taille du tableau
- Retourne le nombre d'octets effectivement reçus, -1 s'il y a une erreur.
- Fin de la communication: Cas de UDP et TCP
- - Il faut maintentant raccrocher le téléphone.
- - La fonction int close (int sock)
- Retourne -1 s'il y a une erreur
- Fermeture complète, on ne peut plus envoyer ou recevoir de données
- La connexion est complètement fermée et libérée une fois que le client et le serveur on fait close
- La fermeture est symétrique: Le client ou le serveur peut commencer la fermeture
- La fonction int shutdown (int sock, int sens)
- On peut préciser le sense de fermeture, la connexion n'est alors pas complètement fermée.
- Sens:
- 0: Fermeture en entrée
- 1: Fermeture en sortie
- 2: Fermeture dans les deux sens (Equivalent à un close)
- Retourne -1 s'il y a une erreur, 0 sinon.
Advertisement
Add Comment
Please, Sign In to add comment