Example: air traffic controller

La programmation client-serveur - Olivier Aubert

Laprogrammationclient-serveurOlivierAube rt1/32 Sources ~obaid/INF4481/A01 ~exco/ man 2 socket socket RFC791(IP),RFC793(TCP),RFC768(UDP) RichardStevens,UNIXN etwork Programming2/32 Lemod leclient-serveurICommunicationentreproce ssus: unclient,l autreserveur,quicoop rations effectuesousla formed un changededonn es. Leclientre oitlesr sultatsfinauxd livr leC/SIS tenddeplusenplusverstouslesdomainesd activit s: World WideWeb Gestiondebasesdedonn es Syst mestransactionnels Syst mesdemessagerie Syst mesdepartagededonn es Calculscientifique negarantitpas: l int grit desdonn es l ordonnancementdesdonn es la non-duplicationdesdonn es Cespropri t sdoivent tregarantiesparl : garantitlespropri t sci-dessus impliqueunediminutiondesperformancesbrut esparrapport aumodenon-connect.

RFC 791 (IP), RFC 793 (TCP), RFC 768 (UDP) Richard Stevens, UNIX Network Programming 2/32. Le modèle client-serveur I Communication entre processus : un client, l’autre serveur, qui coopèrent. I Cette coopération s’effectue sous la forme d’un échange de données. Le client reçoit les résultats finaux délivrés par le

Tags:

  Programming, Network, Unix, Unix network programming

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Transcription of La programmation client-serveur - Olivier Aubert

1 Laprogrammationclient-serveurOlivierAube rt1/32 Sources ~obaid/INF4481/A01 ~exco/ man 2 socket socket RFC791(IP),RFC793(TCP),RFC768(UDP) RichardStevens,UNIXN etwork Programming2/32 Lemod leclient-serveurICommunicationentreproce ssus: unclient,l autreserveur,quicoop rations effectuesousla formed un changededonn es. Leclientre oitlesr sultatsfinauxd livr leC/SIS tenddeplusenplusverstouslesdomainesd activit s: World WideWeb Gestiondebasesdedonn es Syst mestransactionnels Syst mesdemessagerie Syst mesdepartagededonn es Calculscientifique negarantitpas: l int grit desdonn es l ordonnancementdesdonn es la non-duplicationdesdonn es Cespropri t sdoivent tregarantiesparl : garantitlespropri t sci-dessus impliqueunediminutiondesperformancesbrut esparrapport aumodenon-connect.

2 Peutconstituerunecontrainte. Permetuneimpl mentationasynchronedes changes5/32 LesclientsIUneapplicationclienteestmoins complexe qu uneapplicationserveur. Laplupart desapplicationsclientesneg rentpasd interactionsavecplusieursserveurs. Laplupart desapplicationsclientessonttrait escommeunprocessusconventionnel; unserveurpeutn cessiterdesacc sprivil gi :Ioffreunpointd entr esurle r seauIentredansuneboucleinfinied attentederequ tesI la r ceptiond unerequ te, d clenchelesprocessusassoci s la requ te, puis metla r ponseversle clientIDeuxtypesdeserveurs: it ratifs: neg rentqu unseulclient la fois parall les: fonctionnentenmodeconcurrent7/32 ChoixdutypedeserveurIServeursit ratifsenmodenon-connect :pourlesservicesquin cessitenttr speudetraitementsparrequ te.

3 Parexemple, ratifsenmodeconnnect :pourlesservicesquin cessitenttr speudetraitementsparrequ te, maisontbesoind untransport : Tempsdecr ationd unprocessusextr mementfaible parrapport autempsdetraitementd unerequ te. Lesrequ tesn cessitentdesacc sp riph e l originedansle mondeUNIXet support descommunicationsreposantsurle serveurnevoientlescouchesdecommunication qu traversl finitiondessocketsILessocketspeuvent trevuescommeunpointd acc sparlequelunprocessuspeutenvoyerourecevo irdesdonn sepr sentesousla formed acc saur seauaudessusduservicetransport. C existediff rentstypesdesocketsd termin esselonlespropri t sdela communicationquel onveut t squel onpeutchoisirsont: respectdela s quentialit desenvois viterlesdoublesenvois messages caract reurgent modeconnect 11/32 Caract ristiquesdessocketsUnesocket poss detroiscaract ristiques:ITypeD crit la mani redontlesdonn essonttransmises:SOCK_DGRAM,SOCK_STREAM, finitla nommagedessocketset lesformatsd adressageutilis s:AF_UNIX,AF_INET,AF_INET6, crit le protocoledecommunication utiliserpour mettreet recevoirlesdonn es.

4 G n ralementd termin parle domaine:PF_UNIX,PF_INET,PF_INET6, unesocketpermetdesp cifierle moded adressageet l ensemble adressagelespluscourantssontUnix(AF_UNIX ) et IP(AF_INET), voireIPv6(AF_INET6).13/32 Ledomained adressageIDomaineAF_UNIX: pourlesprocessusquicommuniquentsurla m : pourlesprocessusquicommuniquent traversle r seauIP. LesprotocolesdisponiblessontTCP/IPouUDP/ IP, unprocessusserveurveutfournirdesservices , il abesoind unport d attachepourla rosestr serv serveur, lesports inf rieurs 1024nepeuvent treutilis squeparle rosdeport standardsontd finisdansle fichier/etc/services, et accessiblesviala commandegetservbyname().

5 15/32 StructuresdesocketLesstructuressockaddre tsockaddr_insontd finiescommesuit:structsockaddr{sa_family _tsa_family;/* domaine*/charsa_data[14];/* adresseeffective*/x}structsockaddr_in{sa _family_tsin_family;/* domaine*/unsignedshortintsin_port;/* numrode port*/structin_addrsin_addr;/* adresseIP*/unsignedchar__pad[__SOCK_SIZE __- ..]/* Bourrage*/}16/32Cr ationd unesocketOncr eunesocket avecla primitivesocket():s = socket(AF_INET,SOCK_STREAM,0);sestl identificateurdela utiliserpourlesop rationsdelecture/ ()permetd associeruneadresse unesocket :int bind(intsockfd,structsockaddr*my_addr,so cklen_taddrlen)Iconnect()estutilis eparle clientpour tablir la connexion:int connect(intsockfd,conststructsockaddr*se rv_addr,socklen_taddrlen);Ilisten()estut ilis eparle serveurpour tablir laconnexion:int listen(ints, int backlog);Iaccept()estutilis eparle serveurpourindiquerqu ilestpr t accepterdesconnexions.

6 Appelg n ralementbloquant:int accept(ints, structsockaddr*addr,socklen_t*addrlen);I shutdown()etclose()permettentdefermerune connexion:int shutdown(ints, int how);18/32 Transfert enmodeconnect ILescommandessend()etrecv()permettentd changerdesdonn es:int send(ints, constvoid*msg,size_tlen,int flags);int recv(ints, void*buf,size_tlen,intflags);IOnpeutpr ciserdesoptionsdansleschampsflags. Parexemple,MSG_OOBpourlesdonn :send()peutn envoyerqu unepartiedesdonn es. Nepasoublierdev est galementpossible d utiliserlesappelsread()etwrite()quioffre moinsdepossibilit sdecontr Danscemode, on tablit d rerdesdonn es traversle tuyaucr.

7 Socket()bind()listen()accept()read()/wri te()shutdown()socket()read()/write()shut down()connect()ClientServeurConnexion 'etablieTransfert de donnees20/32 Client-serveurenmodenon-connect Danscemode, onn tablit pasdeconnexionaupr ()bind()recvfrom()sendto()socket()sendto ()sendto()bind()ClientServeurdonneesdonn ees21/32 Serveurs quentielLeserveurnepeutg rerqu uneconnexion la fois:s = socket(..);bind(..);listen(s, ..);for(;;){ns = accept(s, ..);executer_service(ns,..);close(ns);}2 2/32 ServeurconcurrentLeserveurpeutg rerplusieursconnexionsenparall le:s = socket(..);bind(..);listen(s, ..);for(;;){ns = accept(s, ..);if (fork()== 0) {close(s);executer_service(ns.)}}

8 ;close(ns);} else{close(ns);}}23/32 AutregestiondelaconcurrenceIFonctionsele ct()Iint select(intn, fd_set*readfds,fd_set*writefds,fd_set*ex ceptfds,structtimeval*timeout);IManipula tiondesfdsets:FD_ZERO,FD_SET,FD_CLR,FD_I SSET24/32 Transfert enmodenon-connect IAussiappel ()etrecvfrom().intsendto(ints, constvoid*msg,size_tlen,int flags,conststructsockaddr*to,socklen_tto len);intrecvfrom(ints,void*buf,size_tlen ,int flags,structsockaddr*from,socklen_t*from len);25/32 Lesconversionsdedonn esIExempledebigendian/littleendian:12345 678(Littleendian- Motorola)78563412(Bigendian- Intel) network order: 12345678(littleendian)Iunsignedlongintht onl(unsignedlonginthostlong);Convertit unevaleurdansl encodager seauenunevaleurdansl (unsignedshortinthostshort); (unsignedlongintnetlong);Convertit unevaleurdansl encodagelocalenunevaleurdansl encodager (unsignedshortintnetshort).

9 Idempourdesvaleursshort26/32 Traductiond adressesIUnnomdemachine( ) peut treconverti enadresseIP( ) parla commandegethostbyname().ILesdonn esn cessairessontstock esenlocal(fichier/etc/hosts) esDataTFTPUDPIPE thernet28/32 OptionsIsetsockopt: permetdesp cifierdesoptionssurlesconnexionsISO_REUS EADDRISO_PRIORITYISO_DONTROUTEISO_BROADC AST29/32 Obtentiond informationsIgetpeername: retournele nomdela machineconnect e unesocket30/32 InetdIinetd: exemplede super-serveur UNIXID clenchel ex cutiondeprogrammeslorsd uneconnexionsurunport particulierILesservicessontnomm sdansle fichier/etc/services:echo7/tcpecho7/udpd aytime13/tcpdaytime13/udpssh22/tcp# SSHR emoteLoginProtocoltelnet23/tcpsmtp25/tcp mailtftp69/udp31 # <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>


Related search queries