11.07.2015 Views

Les Réseaux Informatiques - Kro gpg

Les Réseaux Informatiques - Kro gpg

Les Réseaux Informatiques - Kro gpg

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Les</strong> processus fils, n’ont pas vu la phase d’établissement de la connexion. Ils ont des primitives pourdemander au système comment s’appelle leur interlocuteur ou à travers quelle interface, ils sont connectés.getpeername ( socket , adresse de destination , longueur adresse )Ceci n’a de sens qu’avec TCPgetsockname ( socket , adresse locale , longueur adresse )Demander et définir des options de socketCeci permet de définir des options TCP ou IP par ex les options d’en-têtegetsockopt ( socket , niveau , Nom de l’option , valeur de l’option , longueur )setsockopt ( socket , niveau , Nom de l’option , valeur de l’option , longueur )niveau = opération sur socket ou couche de protocoleMise en attente de connexions entrantes d’un serveur TCPListen permet de dire au système que l’application est prête a recevoir des appels et demande de réserverune certaine taille de file d’attente pour ses informations. C’est juste une préparation, cet appel n’est pasbloquant. La primitive accept va réaliser la dernière partie.listen ( socket , longueur file d’attente )newsock = accept ( socket, adresse , longueur adresse )Le serveur se met en attente avec la commande accept. Le système (TCP) libère le serveur lorsqu’un appelentrant arrive et fournit une nouvelle socket. Celui ci crée un processus fils, ferme newsock qui sera possédépar le fils et retourne en état bloqué sur la fonction accept.Accès au serveur de domaine.Pour utiliser les primitives de base (bind , sendto , connect), il faut utiliser les numéros IP. Il existe doncdes primitives pour convertir une adresse symbolique en adresse IP.ptr = gethostbyname ( nom de domaine )obtenir le numéro IPptr = gethostbyaddr (adresse , longueur , type)retourne le nom symbolique d’une adresse IP (reverse adresse)Des informations sur la programmation des sockets sous windows :tout sur winsock.dllftp://sunsite.unc.edu/pub/micro/pc-stuff/ms-windows/winsock/Exemple de programmation par sockets tiré du livre (TCP/IP illustré Volume 1) de R StevensProgramme pour installer un serveur sur un port (partie du programme sock) développé par Richard Stevenssource : ftp://ftp.uu.net/published/books/stevens.tcpipiv1.tar.Z/** Copyright (c) 1993 W. Richard Stevens. All rights reserved.* Permission to use or modify this software and its documentation only for* educational purposes and without fee is hereby granted, provided that* the above copyright notice appear in all copies. The author makes no* representations about the suitability of this software for any purpose.* It is provided "as is" without express or implied warranty.*/#include"sock.h"intservopen(char *host, char *port){intfd, newfd, i, on, pid;char*protocol;unsigned longinaddr;struct sockaddr_in cli_addr, serv_addr;struct servent*sp;protocol = udp ? "udp" : "tcp";/* Initialize the socket address structure */bzero((char *) &serv_addr, sizeof(serv_addr));serv_addr.sin_family = AF_INET;/* Caller normally wildcards the local INTERNET address, meaninga connection will be accepted on any connected interface.We only allow an IP address for the "host", not a name. */if (host == NULL)serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* wildcard *else {if ( (inaddr = inet_addr(host)) == INADDR_NONE)<strong>Les</strong> <strong>Réseaux</strong> <strong>Informatiques</strong> D. Lalot 79

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!