IFT1025 16 Java et l`Internet
Transcription
IFT1025 16 Java et l`Internet
IFT1025 16 Miklós Csűrös "OIBOH 30 mars 2011 Java et l’Internet ࢱF 9Ŏ5&9 WFSTJPO JT &T GPMHU EFS ࢰFMMUFYU EJFTFT "SUJLFMT 16.1 Suite TCP/IP ;VO¤ࢣTU EFS #FJTQJFMUFYU EFS OJࢣUT 8FTFOUMJࢣFT (fr) JTU VOE OVS EFN ;XFࢢF EJFOU BMMFJO EFO 5FYU XF La suite de protocoles d’Internet est définie à Routeur Routeur FOUTUFIU JO XFMࢣFN BMMF O¶UJHFO ;FJࢣFO० [V FSL l’aide de l’abstraction par «couches», organisées BVTSFJࢣFOE CFVSUFJMFO JTU 5FTU[FJࢣFO ० &CFOTP en une hiérarchie. Chaque[Vcouche correspond à couche protocoles: HTTP, SMTP, POP, ... TࢣFO I¤VॷHFO #VࢣTUBCFOQBBSF WPSLPNNFO VOE Application un aspect séparé de la communication, allant de BVࢣ JO HFX¶IOMJࢣFO %SVࢢTBࢣ couche fonctionnalité GBMMF de base jusqu’au niveau des JOIBMUWPMMFO applicaTransport protocoles: TCP, UDP, ... G¼ISVOH BN &OEF VOE HFSFJࢣU IBU TJF IPॶFOMJࢣ BV tions sur les ordinateurs liés. Conceptuellement, les couche IP Réseau nœuds dans une couche échangent de l’information -JTUJOH ࢰFMMUFYU EJF à l’aide des protocoles standardisés. Physiquement, couche 5&9 54−Q SPHSBN Y F U F Y Liaison la connexion dans établie 5&9chaque F O D P Ecouche J O H est 65'− 6 O Jpar DPEF couche Physique O J U J P O FsousO −−−−−−−−−−−−−−− communication−−−−−−−−−−−−% avec le nœud dansFlaG J couche cable cable Ethernet Ethernet \ EPDVNFOUDMBTT < B QBQFS QU >{ T D S B S U D M } jacente. \ E P D par V N Fsignaux, O U D M B T T synchronisation, < B QBQFS QU >{ S F Q P S U } ? couche physique : caractéristiques physiques liés à la médium (encodage −−−−−1 B L F U F −−−−−−−−−−−−−−−−−−−−−−−−−−− etc.) \ V T F Q B D L B H F < V U G > { J O Q V U F O D } C F J 9F5FY ? couche liaison : transportation de paquets dans la couche physique (p.e., & Jprotocole O H B O H T L PEthernet) E J F S V O H NFIS O ¶ U J H .VTT 65 ? couche réseau : acheminement de paquets à travers un seul réseau. \ VExemple T F Q B D L B H: FInternet { Y V O J DProtocol P E F } définit G ¼ S 9F5FY \ V T F et Q B la D Ltransmission B H F { G P O U T Qde F Dmessages } G ¼ S :9F5FY l’adressage IPv4 (32 bits en format xxx.xxx.xxx.xxx) où IPv6 (128 bits), \ V T Ftransport Q B D L B H F[reçu { Y M U YdeU Smessage], B } G ¼ S(3)9F5FY (1) passerrelles entre réseaux [next hop], (2) couche liaison → couche \ V T F Q B D L B H F { V S M } G ¼ S 9F5FY [VN 6NCSFDI couche transport → couche liaison [envoi de message]. \ V T F Q B D L B H F { OHFSNBO } & J O T U F M M V O H F O G ¼ S ? couche transport : assure la fiabilité de la communication (assemblage 4 J Mde C F Opaquets, U S F O O V Orequêtes H F U D de retransmission). Exemple : Transmission Control Protocol (TCP) assure\ l’assemblage V T F Q B D L B H F et { Nlivraison V M U J D P M propre } F Sde M B V C U FT NJU \ N F I S T Q B M U J H [V T F U [ F O messages, ainsi que le multiplexage par ports. V T F Q BExemples D L B H F { H :S BHypertext Q I J D Y } Transfer 6 O U F S T U ¼ U [ V O H WP ? couche application : définit le syntaxe de la communication sur un\ port. \ VTFQBDLBHF { XSBQGJH } VNGMPTTFOF (SBGJLF Protocol (http), File Transfer Protocol (ftp), Simple Mail Transfer Protocol (smtp), Post Office Protocol (pop), \ V T F Q B D L B H F { W F S C B U J N } Internet Message Access Protocol (imap), Internet Relay Chat Protocol (irc), \ V T etc. FQBDLBHF { Q J D J O Q B S } \ V T F Q B D L B H F < HFSNBO > { W B S J P S F G } F S X F J U F S \ V T F Q B D L B H F < XJEF > { T J E F D B Q } F S N ¶ H M J D I U " C C J M E V O H F O VOE 5 B C F M M F O \ VTFQBDLBHF { D D B Q U J P O } "OQBTTVOHTN¶HMJD "CCJMEVOHTCF[FJDIOVOHFO \ V T F Q B D L B H F { D B Q U −P G } \ VTFQBDLBHF < D P M P S M J O L T M J O L D P M P S CMVF >{ J O E F S 1%' \ VTFQBDLBHF { M J T U J O H T } \ V T F Q B D L B H F { S B H H F E F } \ M F U \ S B H H F E S J H I U \ 3 B H H F E 3 J H I U \ V T F Q B D L B H F < OFXDPNNBOET O F X Q B S B N F U F S T > { ;FJMFOVNCS¼DIF CFT CFJ \ DBQUJPO 1 −−−−−−−−−−− 4 D I S J G U E F G J O J U J P O F O G ¼ S 9 F U F \ E F G B V M U G P O U G F B U V S F T { 4 D B M F .BUDI-PXFSDBT B V G F J O F Y−)¶IF > ) B S N P O J T J F S V O H \ T F U N B J O G P O U < .BQQJOH U F Y −U F Y U > { - J O V Y - J C \ T F U S P N B O G P O U < .BQQJOH U F Y −U F Y U > { - J O V Y # \ T F U S P N B O G P O U < .BQQJOH U F Y −U F Y U 3 B X ' F B U \ T F U S P N B O G P O U < .BQQJOH U F Y −U F Y U > { - J O V Y # \ T F U T B O T G P O U < .BQQJOH U F Y −U F Y U > { .ZSJBE 1 On peut établir connexion TCP/IP le logiciel telnet : une par telnet adresse port (adresse est l’adresse IP ou le nom du serveur.) Le protocole HTTP définit par exemple le syntaxe du message GET : c’est la requête d’un document. On envoie le message GET chemin protocole, suivi "OIBOH par d’autres lignes d’informasur la requête, ࢱF 9Ŏtion 5&9 WFSTJPO JT fini par vide. EJFTFT "SUJLFMT &T GPMHUune EFSligne ࢰFMMUFYU ;VO¤ࢣTU EFS #FJTQJFMUFYU EFS OJࢣUT 8FTFOUMJࢣFT (fr) JTU VOE OVS EFN ;XFࢢF EJFOU BMMFJO EFO 5FYU XF FOUTUFIU JO XFMࢣFN BMMF O¶UJHFO ;FJࢣFO० [V FSL BVTSFJࢣFOE [V CFVSUFJMFO JTU 5FTU[FJࢣFO ० &CFOTP TࢣFO I¤VॷHFO #VࢣTUBCFOQBBSF WPSLPNNFO VOE GBMMF BVࢣ JO HFX¶IOMJࢣFO JOIBMUWPMMFO %SVࢢTBࢣ G¼ISVOH BN &OEF VOE HFSFJࢣU IBU TJF IPॶFOMJࢣ BV Le protocole SMTP définit -JTUJOH ࢰFMMUFYU EJF les messages pour envoyer 5&9 un 54−Q SPHSBN: HELO Y F U Fpour Y courriel se 5&9 présenter, F O D P E J O H MAIL 65'− JDPEF FROM 6 Opour −−−−−−−−−−−−% F G J O J UTO J P Opour F O −−−−−−−−−−−−−−− l’expéditeur, RCPT le \ EPDVNFOUDMBTT < B QBQFS QU >{ T D S B S U D M } destinataire, et DATA pour le \ E P D V N F O U D M B T T < B Q B Q F S Q U > { S F Q P S U } texte courriel. −−−−−1 B L Fdu U F −−−−−−−−−−−−−−−−−−−−−−−−−−− \ V T F Q B D L B H F < V U G > { J O Q V U F O D } C F J 9F5FY & J O H B O H T L P E J F S V O H NFIS O ¶ U J H .VTT 65 \ V T F Q B D L B H F { Y V O J D P E F } G ¼ S 9F5FY ࢱF \ V T F9QŎB5D&L9BWFSTJPO H F { G P O JT U T Q F D } G ¼ S 9F5FY \ V T F Q B D L B H F { Y M U Y B } "SUJLFMT G ¼ S 9F5FY &T GPMHU EFS ࢰFMMUFYUU SEJFTFT \ V T F Q B D L B H F { V S M } G ¼ S 9F5FY 6NCSFDI ;VO¤ࢣTU EFS #FJTQJFMUFYU EFS OJࢣUT[VN 8FTFOUMJࢣFT (fr) \ V T F Q B D L B H F { OHFSNBO } & J O T U F M M V O H F O G ¼ S JTU VOE OVS EFN ;XFࢢF EJFOU BMMFJO EFO 5FYU XF 4JMCFOUSFOOVOH FUD FOUTUFIU [VJ U FSL \ V T F Q B D LJO B HXFMࢣFN F { N V M U J DBMMF P M }O¶UJHFO F S M B;FJࢣFO० VCU FT N \ BVTSFJࢣFOE N F I S T Q [V B M U CFVSUFJMFO J H [V T F UJTU [ F O5FTU[FJࢣFO ० &CFOTP \ V T F QI¤VॷHFO B D L B H F { H#VࢣTUBCFOQBBSF S B Q I J D Y } 6 OWPSLPNNFO U F S T U ¼ U [ V O HVOE WP TࢣFO \ V T F Q B D L B H F { X S B Q G J H } V N G M P T T F O F ( S B G JLF GBMMF BVࢣ JO HFX¶IOMJࢣFO JOIBMUWPMMFO %SVࢢTBࢣ \ V T F Q B D L B H F { W F S C B U J N } G¼ISVOH IBU TJF IPॶFOMJࢣ BV \ V T F Q B D BN L B H&OEF F { Q J DVOE J O Q HFSFJࢣU BS } \ V T F Q B D L B H F < HFSNBO > { W B S J P-JTUJOH SFG} F S X F J U FEJF S ࢰFMMUFYU \ V T F Q B D L B H F < XJEF > { T J E F D B Q } F S N ¶ H M J D I U 5&9 Y5FBU CF FY M M F O " C C54−Q J M E V SPHSBN O H F O VOE 5&9 F O D P E J O H 65'− O JODQPBETFT V O H T N ¶ H M J D \ V T F Q B D L B H F { D D B Q U J P O } 6" −−−−−−−−−−−−% F G J O J U J P O F " C C J M E V O H T C F [ F J D I O V O H FOO−−−−−−−−−−−−−−− \ E P D Q B QG }F S Q U > { T D S B S U D M } \ V T FVQNBFDOL UBDHMFB{T TD B< QB U−P \ E P D V N F O U D M B T T < B \ V T F Q B D L B H F < D P M P S M JQOBLQTF S M J OQLU D> {P MS PF SQ P CS UM V} F >{ −−−−−1 F −−−−−−−−−−−−−−−−−−−−−−−−−−− J O EBFLS F U1%' \ \ V VT FT QF QB DB LD LB HB HF F{ <M JVTUUG JO> H{ TJ O} Q V U F O D } C F J 9F5FY \ V T&FJQOBHDBLOBHHTFL{PSEBJHFHS FVEO H F }NFIS O ¶ U J H .VTT 65 \ V TM FF QU \B DS LB BH HHFF {E YS VJ HOIJ DU P\ E3FB} \ H H F GE¼3SJ H 9F5FY IU \ V T F Q B D L B H F { G P O U T Q F D } G ¼ S 9F5FY \ V T F Q B D L B H F < OFXDPNNBOET O F X Q B S B N F U F S T > { \ V T F;QFBJDM FLOB VH N F {CYS ¼M UDYIUFS BC}F T GC¼FSJ 9F5FY \ D B Q U J P O "OIBOH 2 16.2 Sockets L’accès à la suite TCP/IP se fait par sockets. Un socket correspond à une connexion dans la couche de transport (adresse+port au serveur). Socket au client /** Code d’un client */ import java.net.Socket; import java.io.*; ... Socket s = new Socket("www.iro.umontreal.ca", 80); // adresse et port InputStream instream = s.getInputStream(); OutputStream outstream = s.getOutputStream(); PrintWriter out = new PrintWriter(outstream); BufferedReader in = new BufferedReader(new InputStreamReader(instream)); String command = "GET / HTTP/1.0\n\n"; out.print(command); out.flush(); // pour assurer l’envoi while(true) // et on lit ce qui arrive à l’input { String line = in.readLine(); if (in == null) break; ... } s.close(); // libère la ressource Socket Sockets au serveur /** Code du serveur */ import java.net.Socket; import java.net.ServerSocket; import java.io.*; ... int port = 8888; // port écouté sur cette machine SocketServer server = new SocketServer(port); // lance le serveur while (true) { Socket s = server.accept(); // attente de connexion [sommeil du procéssus] Runnable service = new ClientAssistant(s); Thread t = new Thread(service); // traiter les connections en Threads séparés t.start(); // et on peut continuer la boucle } Ici, la classe ClientAssistant utilise les méthodes getInputStream() et getOutputStream() du Socket dans la communication. 16.3 Connexion URL L’API de Java définit des classes explicitement conçues pour la communication par HTTP et FTP. ? classe URL : définit le format Unified Resource Locator (URL), comme http://www.iro.umontreal. ca/index.html. ? classe URLConnection : encapsule la communication par sockets et la construction de messages HTTP/FTP. 3 ? classe HttpURLConnection : extension de URLConnection avec d’autres fonctionnalités de HTTP. ⇒ il n’est pas nécessaire de connaı̂tre les détails du protocole http, ou les sockets. import java.net.URL; import java.net.URLConnection; import java.net.HttpURLConnection; ... String urlString = "http://www.iro.umontreal.ca/"; URL u = new URL(urlString); URLConnection connection = u.openConnection(); // throws IOException HttpURLConnection httpConnection = (HttpURLConnection) connection; // conversion OK à cause de "http://" int code = httpConnection.getResponseCode(); // 200=OK, 404=Not Found if (code != HttpURLConnection.HTTP_OK) // != 200 { System.err.println(httpConnection.getResponseMessage());// p.e., "Not Found" } else { InputStream instream = connection.getInputStream(); ... // lecture du texte } 16.4 Applets Imbrication d’une application Java dans un page Web : applet. La classe javax.swing.JApplet définit un containeur de plus haut niveau comme JFrame. Un applet n’a pas d’accès aux fichiers locaux et ne peux télécharger que des document au serveur (par URL). Inclusion de l’applet dans un document HTML : <applet code="TumbleItem" archive="tumbleClasses.jar, tumbleImages.jar" width="600" height="95"> <param name="maxwidth" value="120"> <param name="nimgs" value="17"> <param name="offset" value="-57"> <param name="img" value="images/tumble"> Your browser is completely ignoring the <applet> tag! </applet> Extension de JApplet : redéfinition des méthodes suivantes. ? init() : c’est comme un constructeur, appellé une fois quand l’applet est affiché par le fureteur (p.e., lancer des threads) ? start() : appellée après init, chaque fois que la page est affiché de nouveau (p.e., lancer une animation avec Timer) ? stop() : appellée avant de déstruction quand l’usager quitte le page (p.e., arrêter l’animation) ? destroy() : appellé pour la libération de ressources (p.e., arrêter les threads) Graphisme : redéfinir paint(Graphics g) où attacher des composantes Swing à getContentPane(). Paramètres : pour recupérer les paramètres spécifiées dans la page HTML (<param... >), utiliser la méthode String getParameter(String nom) dans le code Java. 4