IFT1025: Programmation 2 Internet Jian-Yun Nie. Concepts Communication sur lInternet Connexion dans Java.

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Le Nom L’adjectif Le verbe Objectif: Orthogram
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
Reporting de la Cellule Nationale Droit dOption Situation au 31 décembre 2011.
Présentation de la circonscription Année 2011/2012 Jeudi 24 novembre 2011.
Additions soustractions
Distance inter-locuteur
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
7 juin 2012 DGAL.
International Telecommunication Union Accra, Ghana, June 2009 Relationship between contributions submitted as input by the African region to WTSA-08,
Les numéros 70 –
Les numéros
Les identités remarquables
Le, la, les words Possessive Adjectives MINE!!. 2 My in french is mon, ma,mes... Le word/ begins with a vowel: Mon La word: Ma Les word: Mes.
Xavier Mouranche Registre e-MUST Evaluation en Médecine dUrgence des Stratégies Thérapeutiques de lInfarctus du Myocarde.
Algorithme et structure de données
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
Données statistiques sur le droit doption au 31/01 8 février 2012.
Correspondances en Onco-Urologie - Vol. III - n° 3 – juillet-août-septembre VESSIE Daprès James ND et al., N Engl J Med 2012;366:16:
Technologies et pédagogie actives en FGA. Plan de latelier 1.Introduction 2.Les technologies en éducation 3.iPads 4.TNI 5.Ordinateurs portables 6.Téléphones.
Révision (p. 130, texte) Nombres (1-100).
La législation formation, les aides des pouvoirs publics
1 7 Langues niveaux débutant à avancé. 2 Allemand.
Exercice Trame Ethernet
SERABEC Simulation sauvetage aérien avec un Hercule C130. Départ de St-Honoré le 4 octobre Durée de vol 3 heures. Premier vol en Hercule pour les.
La méthodologie………………………………………………………….. p3 Les résultats
Structure(djs)TéléphoneFax ADRA R049,96,03,21 CHLEF027,77,22,66 /77,49, LAGHOUAT029,90,41,08029,90,42,47 OUM EL BOUAGHI032,42,16,26032,42,45,32.
Jack Jedwab Association détudes canadiennes Le 27 septembre 2008 Sondage post-Olympique.
Le soccer & les turbans Sondage mené par lAssociation détudes canadiennes 14 juin 2013.
Présentation générale
Le drapeau canadien comme symbole de fierté nationale : une question de valeurs partagées Jack Jedwab Association détudes canadiennes 28 novembre 2012.
Et la disparition de notre
Si le Diaporama ne s'ouvre pas en plein écran Faites F5 sur votre clavier.
Les nombres.
Les quartiers Villeray – La Petite-Patrie et les voisinages
Conseil Administration AFRAC – 2 décembre Toulouse 1 Fermes de références Palmipèdes à foie gras Synthèse régionale – Midi Pyrénées Exercice
La consommation de boissons alcooliques chez les jeunes LICEO SCIENTIFICO N. COPERNICO PRATO ELEVES (age ans): 342 F: 192 M: 150.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
LES NOMBRES PREMIERS ET COMPOSÉS
CLL11 : chlorambucil (CLB) versus CLB + rituximab (R)
Les chiffres & les nombres
Les Monnaies et billets du FRANC Les Monnaies Euro.
RACINES CARREES Définition Développer avec la distributivité Produit 1
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
Tournoi de Flyball Bouin-Plumoison 2008 Tournoi de Flyball
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
Jean-Marc Léger Président Léger Marketing Léger Marketing Les élections présidentielles américaines.
Introduction au Langage C
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
3% 10% 3% 8% 26% 18% 8% 9% 42% 59% 73% 64% 22% 18% 12% 27% ProtectionWashEducationNutrition % 77% 85% 91% n=31 n=34 n=26n=22 Moyenne.
1 INETOP
Les Nombres 0 – 100 en français.
Aire d’une figure par encadrement
Copyright 2011 – Les Chiffres Copyright 2011 –
P.A. MARQUES S.A.S Z.I. de la Moussière F DROUE Tél.: + 33 (0) Fax + 33 (0)
Les fondements constitutionnels
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
(analyse en modèle de Cox multivarié - HR [IC95])
+0.42% +8.48% +0.6% +4.33% +6.48% -0.77% +3.79% +6.48% +4.02% +4.53%
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Certains droits réservés pour plus d’infos, cliquer sur l’icône.
LES COURSES SUR PISTE.
Annexe Résultats provinciaux comparés à la moyenne canadienne
Les Chiffres Prêts?
La formation des maîtres et la manifestation de la compétence professionnelle à intégrer les technologies de l'information et des communications (TIC)
Bienvenue.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Les sockets.
Transcription de la présentation:

IFT1025: Programmation 2 Internet Jian-Yun Nie

Concepts Communication sur lInternet Connexion dans Java

Internet Stockage de données (informations) –Serveur –Client Connexion –Connexion entre un client et un serveur –Un canal de communication Transmission –Protocole: définit les commandes le format de données transmises

Schéma de communication typique Serveur: –Il est lancée, en attente de recevoir un message (commande) Client –Demande à établir une connexion avec le serveur –Transmet une commande au serveur Serveur –Reçoit la commande –Traite la commande –Renvoie la réponse Client –Reçoit la réponse –Continue à traiter, transmet une autre commande, …

Établir une connexion Identifier ladresse du serveur à laquelle envoyer une requête de connexion Adresse: –Adresse IP (Internet Protocol): 4 octets (4 entier 0-255) – Domain Naming Service (DNS): le nom correspondant à une adresse IP –Ss_domaine. sous_domaine. domaine –java.sun.com, –Traduction de DNS en adresse IP: par un serveur DNS Serveur –Prêt à recevoir des requêtes des types préétablis –E.g. GET

Transmission de données Transmettre caractère par caractère –Lent, inefficace Par paquet (package) –Un tampon pour accumuler les données –Quand il est rempli, envoyer (et vider) –Plus efficace

Contrôle de transmission TCP/IP: –IP: soccupe de découper les données en paquets, les envoyer –TCP: Transmission Control Protocol Contrôle le bon fonctionnement de la transmission Un paquet est-il envoyé et reçu correctement ? Sinon, renvoyer le paquet

Communication entre client et serveur Server: –Reçoit une requête: Adresse IP du client Commande –Déterminer la réponse –Envoyer la réponse à ladresse IP –Prêt à recevoir une autre commande Client –Envoie une requête au serveur –Attend à recevoir une réponse (ou un message derreur)

Protocole Un serveur est établi pour communiquer selon un protocole Canal de communication (no. de port) –0 and 65,535 –HTTP: par défaut: 80 Serveur Web: prêt à recevoir les requêtes HTTP: –Adresse dun document: Uniform Resource Locator (URL) java.sun.com/index.html –Commande –GET /index.html HTTP/1.0 (suivie dune ligne blanche) –

Protocole HTTP CommandMeaning GETReturn the requested item HEADRequest only the header information of an item OPTIONSRequest communications options of an item POSTSupply input to a server-side command and return the result PUTStore an item on the server DELETEDelete an item on the server TRACETrace server communication

Interprétation de la donnée HTTP –Interprète les commande –Ninterprète pas les données Navigateur –Interprète les données reçues –HTML: format de données

En Java Établir une connexion avec un serveur Web –Créer un socket entre Client et Serveur –Socket s = new Socket(hostname, portnumber); –Socket s = new Socket("java.sun.com", 80);

En Java Obtenir les streams du Socket InputStream instream = s.getInputStream(); OutputStream outstream = s.getOutputStream(); Caster les streams Scanner in = new Scanner(instream); PrintWriter out = new PrintWriter(outstream); Fermer le socket s.close();

Scanner Implente iterator: –boolean hasNext() –String next()

Exemple (BigJava) Un programme pour obtenir une page web –Établir une connexion avec un serveur –Envoyer une requête –Recevoir la réponse –Fermer java WebGet java.sun.com / –Lancer WebGet avec 2 paramètres: java.sun.com: DNS /: page racine Port par défaut: 80

01: import java.io.InputStream; 02: import java.io.IOException; 03: import java.io.OutputStream; 04: import java.io.PrintWriter; 05: import java.net.Socket; 06: import java.util.Scanner; 07: 14: public class WebGet 15: { 16: public static void main(String[] args) throws IOException 17: { 19: 20: String host; 21: String resource; 22: 23: if (args.length == 2) 24: { 25: host = args[0]; 26: resource = args[1]; 27: } 28: else 29: { 30: System.out.println("Getting / from java.sun.com"); 31: host = "java.sun.com"; 32: resource = "/"; 33: } 34: 37: final int HTTP_PORT = 80; 38: Socket s = new Socket(host, HTTP_PORT); 39: 42: InputStream instream = s.getInputStream(); 43: OutputStream outstream = s.getOutputStream(); 44: 47: Scanner in = new Scanner(instream); 48: PrintWriter out = new PrintWriter(outstream); 49: 52: String command = "GET " + resource + " HTTP/1.0\n\n"; 53: out.print(command); 54: out.flush(); 55: 58: while (in.hasNextLine()) 59: { 60: String input = in.nextLine(); 61: System.out.println(input); 62: } 63: 66: s.close(); 67: } 68: }

Résultat: java WebGet HTTP/ OK Server: Sun-Java-System-Web-Server/6.1 Date: Tue, 28 Mar :07:26 GMT Content-type: text/html;charset=ISO Set-Cookie: SUN_ID= : ; EXPIRES=Wednesday, 31-Dec :59:59 GMT; DOMAIN=.sun.com; PATH=/ Set-cookie: JSESSIONID=519A024C45B4C300DA868D076CA33448;Path=/ Connection: close <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " g/TR/html4/loose.dtd"> Java Technology <meta name="description" content="Java technology is a portfolio of products tha t are based on the power of networks and the idea that the same software should run on many different kinds of systems and devices." /> …

Créer un serveur Web Choisir un port non utilisé: e.g Construire un socket serveur: –ServerSocket server = new ServerSocket(8888); Faire accepter les commande –Socket s = server.accept(); –BankService service = new BankService(s, bank); BankService(s, bank) –une classe créée localement pour donner des services (répondre aux requêtes reçues sur le socket s

Exemple: BankService BankService carries out the service Implements the Runnable interface Its run method will be executed in each thread that serves a client connection run gets a scanner and writer from the socket, then executes: public void doService() throws IOException { while (true) { if (!in.hasNext()) return; String command = in.next(); if (command.equals("QUIT")) return; executeCommand(command); }

Exemple 01: import java.io.InputStream; 02: import java.io.IOException; 03: import java.io.OutputStream; 04: import java.io.PrintWriter; 05: import java.net.Socket; 06: import java.util.Scanner; 07: 08: /** 09: Executes Simple Bank Access Protocol commands 10: from a socket. 11: */ 12: public class BankService implements Runnable 13: { 14: /** 15: Constructs a service object that processes commands 16: from a socket for a bank. aSocket the socket aBank the bank 19: */ 20: public BankService(Socket aSocket, Bank aBank) 21: { 22: s = aSocket; 23: bank = aBank; 24: } 26: public void run() 27: { 28: try 29: { 30: try 31: { 32: in = new Scanner(s.getInputStream()); 33: out = new PrintWriter(s.getOutputStream()); 34: doService(); 35: } 36: finally 37: { 38: s.close(); 39: } 40: } 41: catch (IOException exception) 42: { 43: exception.printStackTrace(); 44: } 45: }

Exemple 51: public void doService() throws IOException 52: { 53: while (true) 54: { 55: if (!in.hasNext()) return; 56: String command = in.next(); 57: if (command.equals("QUIT")) return; 58: else executeCommand(command); 59: } 60: } 61: 89: private Socket s; 90: private Scanner in; 91: private PrintWriter out; 92: private Bank bank; 93: } 63: Executes a single command. command the command to execute 65: */ 66: public void executeCommand(String command) 67: { 68: int account = in.nextInt(); 69: if (command.equals("DEPOSIT")) 70: { 71: double amount = in.nextDouble(); 72: bank.deposit(account, amount); 73: } 74: else if (command.equals("WITHDRAW")) 75: { 76: double amount = in.nextDouble(); 77: bank.withdraw(account, amount); 78: } 79: else if (!command.equals("BALANCE")) 80: { 81: out.println("Invalid command"); 82: out.flush(); 83: return; 84: } 85: out.println(account + " " + bank.getBalance(account)); 86: out.flush(); 87: }