IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Les Sockets ^o)


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut Les Sockets ^o)
    Bonjour a tous, je commence a étudier les sockets en java mais je vous avouerai n'y rien comprendre du tout. Voici un bout de code que j'essaye tant bien que mal à comprendre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
     
    public class Main {
     
    	private static InputStream recuperer;
    	private static OutputStream ecrire;
     
     
    	public static void main(String[] args) {
    		try {
    			Socket chaussette = new Socket("www.google.fr",80);
     
    			recuperer = chaussette.getInputStream();
    			ecrire = chaussette.getOutputStream();
    			OutputStreamWriter osw = new OutputStreamWriter(ecrire);
    			osw.write("GET /index.html HTTP/1.0\r\n\r\n");
    			osw.flush();
     
    			int i;
    			while((i = recuperer.read()) != -1) {
    				System.out.write(i);
    			}
     
     
     
     
    		} catch (UnknownHostException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    		}
     
    }
    Voila ce que j'ai compris :

    Je crée une socket pour établir une transmission de flux de données entre moi et le serveur de google.

    Je récupère dans deux variables différentes les flux de données à lire et à écrire sur la socket, seulement la, j'ai bien restitué la définition sans pour autant comprendre.
    Avec getInputStream je récupère le contenu de la page?

    Et donc le reste et d'autant plus difficile a comprendre si j'ai pas assimilé le début.

    Si vous pouviez m'aider merci d'avance

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    le inputstream, c'est ce que t'envoie la partie située de l'autre coté de la socket (ici google.fr port 80) et le outputstream, c'est ce que tu envoie à l'autre partie (ici "GET /index.html HTTP/1.0\r\n\r\n"). Dans ton cas, le inputstream contiendra la réponse à ta demande, en l'occurence les header http de la réponse et la page web en question.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut
    Okidak, merci pour ta réponse tchize_, donc si je résume, je récupère le flux de données de mon site google dans "récupérer", et ce que je compte envoyer dans "ecrire". Ensuite je crée un objet osw de type OutputStreamWriter que j' instancie avec le paramètre ecrire. Classe qui permet à l'aide de l'une de ses méthodes de convertir un flux de caractères en flux d'octets. J'envoie donc ma requete avec osw.write(), je vide le buffer avec osw.flush() pour m'assurer que tout a été envoyé.

    Mais apres je comprends pas du tout la boucle while?

    Merci pour votre patience

  4. #4
    Membre Expert

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Par défaut
    Le but de la boucle while est de récupérer chaque caractère un par un, jusqu'à ce que toute la page "google" soit lue

Discussions similaires

  1. [CF][PPC/VB.NET] Comment utiliser les Socket avec Pocket PC ?
    Par joefou dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 17/05/2005, 14h24
  2. [Kylix] Aide por les sockets
    Par nabs dans le forum EDI
    Réponses: 1
    Dernier message: 03/04/2004, 12h35
  3. les sockets sur != réseaux
    Par Hypnos dans le forum Développement
    Réponses: 2
    Dernier message: 02/03/2004, 09h45
  4. [Kylix] cherche composants pour les sockets
    Par coriolis dans le forum EDI
    Réponses: 1
    Dernier message: 09/04/2003, 10h18
  5. Questionsssss sur les sockets?
    Par Nino dans le forum Développement
    Réponses: 5
    Dernier message: 01/04/2003, 21h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo