butbanksy

Programmation réseaux

Dec 22nd, 2017
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.49 KB | None | 0 0
  1. Programmation Réseaux
  2.  
  3. Appel d'un numéro et établissement de la communication par le client
  4.  
  5. -Il faut préciser les numéros du destinataire (Serveur)
  6. -Il faut remplir une structure sock_addr_in avec les numéros du destinataire
  7. -Puis appeler la fonction d'établissement de communication qui dépend du protocole (UDP ou TCP)
  8.  
  9.  
  10. L'établissement de la communication par le client dans le cas d'UDP
  11.  
  12. Pas d'établissement de connexion préalable, on envoie le premier paquet de donnée
  13.  
  14. Fonction int sendto (int sock, char *data, int lg_data, struct sockaddr_in *p_ad_s, int flags, int lg-struct)
  15. Data: Les données tableau ou chaîne de caractères à envoyer
  16. lg_data: on précise leur longueur
  17. p_ad_s: structure contenant les numéros du destinataire
  18. Flags: non utilisé, à mettre à 0
  19. Retourne -1 s'il ya une erreur, sinon le nombre d'octets.
  20.  
  21. Attente d'appel sur un téléphone: Cas du serveur avec UDP.
  22.  
  23. -Comme pour le client il faut mettre en place la prise (socket) et lui affecter des numéros (bind).
  24. -Ensuite il faut se tenir prêt à recevoir des coups de fil des clients.
  25. -Dans le cas de UDP, cela se manifeste par l'envoi du premier paquet de donnée.
  26. La fonction int recvfrom (int sock, char *data, int lg_data, struct sockaddr_in *p_ad_s, int flags, int lg_struct)
  27. Data: le tableau (ou chaîne) de caractères reçu (rempli par la fonction)
  28. Lg_data: on précise leur longeur
  29. p_ad_s: structure qui est remplie par reccvfrom et qui contient les numéros du client qui vient d'envoyer ces données
  30. Retourne le nombre d'octet effectivement reçu, -1 s'il y a une erreur.
  31.  
  32. L'établissement de la communication par le client dans le cas de TCP
  33.  
  34. -Il y'a l'établissement d'une connexion préalable, les données seront envoyées ensuite
  35. -Fonction int connect (int sock, struct sockaddr_in p*_ad_s, int lg_struct)
  36. p_ad_s: structure contenant les numéros du destinataire.
  37. -Si l'établissement de la connexion par TCP est réussie, la fonction retourne 0 sinon -1.
  38.  
  39. Attente d'appel sur un téléphone Cas du serveur avec TCP
  40.  
  41. -Comme pour le client il faut mettre ene place la prise (socket) et lui affecter des numéros (bind)
  42. -Ensuite il faut se tenir prêt à recevoir des coups de fil des client
  43. -La fonction int listen (int sick, int nb_requete)
  44. sock: identificateir de la socket dont on renseigne précédemment les numéros
  45. nb_requete: nombre maximal de requête pouvant être mémorisé en attendant un traitement par le serveur.
  46.  
  47. Acceptation d'un appel sur un téléphone: Cas du serveur avec TCP
  48.  
  49. -Le serveur peut accepter une demande de communication sur une socket précedemment mise en attente (listen)
  50. -La fonction int accept (int sock, struct sockaddr_in *p_ad_s, int lg_struct)
  51. sock: identificateur de la socket en attente
  52. p_ad_s: Structure qui est remplie par recvfrom et qui contrient les numéros du client qui vient d'envoyer ces données.
  53. cette fonction est bloquante s'il n y a pas eu de demande de connexion de client
  54. ATTENTION: Elle retourne un nouvel identifcateur de socket mais portant les mêmes numéros (port et adresse).
  55. C'est sur cette nouvelle socket que peuvent se faire les échanges.
  56.  
  57. On parle dans le téléphone: Cas de TCP
  58.  
  59. -Une fois la connexion établie, le client peut envoyer et recevoir des données, le serveur aussi (après l'accept)
  60.  
  61. La fonction int write (int sock, char *data, int lg_data)
  62. Data: Le tableau (ou chaîne) de caractères reçu (rempli par la fonction)
  63. Lg_data: on précise la taille du tableau
  64. Retourne le nombre d'octets effectivement envoyés, -1 s'il y a une erreur.
  65.  
  66. La fonction int read (int sock, char *data, int lg_data)
  67. Data: Le tableau (ou chaîne) de caractères à envoyer
  68. Lg_data: on précise la taille du tableau
  69. Retourne le nombre d'octets effectivement reçus, -1 s'il y a une erreur.
  70.  
  71. Fin de la communication: Cas de UDP et TCP
  72.  
  73. - Il faut maintentant raccrocher le téléphone.
  74. - La fonction int close (int sock)
  75. Retourne -1 s'il y a une erreur
  76. Fermeture complète, on ne peut plus envoyer ou recevoir de données
  77. La connexion est complètement fermée et libérée une fois que le client et le serveur on fait close
  78. La fermeture est symétrique: Le client ou le serveur peut commencer la fermeture
  79.  
  80. La fonction int shutdown (int sock, int sens)
  81. On peut préciser le sense de fermeture, la connexion n'est alors pas complètement fermée.
  82. Sens:
  83. 0: Fermeture en entrée
  84. 1: Fermeture en sortie
  85. 2: Fermeture dans les deux sens (Equivalent à un close)
  86. Retourne -1 s'il y a une erreur, 0 sinon.
Advertisement
Add Comment
Please, Sign In to add comment