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 :

envoyer un objet avec socket


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 93
    Points : 43
    Points
    43
    Par défaut envoyer un objet avec socket
    Salut,
    Je suis débutant avec les sockets, je suis en train de développer un petit exemple d’envoyé d'un objet
    le principe que le client crée leur login et mot passe, puis le serveur convertir le login et le mot passe en majuscule et l'envoyer le résultat au client
    dans ce code le connexion entre le client et serveur établir avec succès,
    le problème que il ne m'affiche pas dans le console le message "Entrez votre login :", je ne sais pas où le problème exactement :/
    et merci de me faire part de vos remarques.

    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
     
    public class Authentification implements java.io.Serializable {
     
    	private String login;
    	private String motpasse;
     
    	public Authentification(String login, String motpasse) {
    		this.login = login;
    		this.motpasse = motpasse;
    	}
     
    	public String getLogin() {
    		return login;
    	}
     
    	public void setLogin(String login) {
    		this.login = login;
    	}
     
    	public String getMotpasse() {
    		return motpasse;
    	}
     
    	public void setMotpasse(String motpasse) {
    		this.motpasse = motpasse;
    	}
     
    	@Override
    	public String toString() {
    		return "votre login est : " + this.login + " et le mot passe : " + this.motpasse;
    	}
     
    }

    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
     
    public class Client {
    	static Socket socket;
    	static ObjectInputStream ois = null;
    	static ObjectOutputStream oos = null;
    	static Scanner console = null;
    	static Boolean val = false;
    	static String login = null, motpass = null;
    	static Authentification auth;
     
    	public static void main(String[] args) {
    		try {
    			System.out.println("Demande de connexion");
    			socket = new Socket("127.0.0.1", 8988);
    			System.out.println("Connexion établie avec le serveur");
    			console = new Scanner(System.in);
    			ois = new ObjectInputStream(socket.getInputStream());
    			oos = new ObjectOutputStream(socket.getOutputStream());
     
    			System.out.println("Entrez votre login :");
    			login = console.nextLine();
     
    			System.out.println("Entrez votre mot passe :");
    			motpass = console.nextLine();
     
    			Authentification ath = new Authentification(login, motpass);
    			oos.writeObject(ath);
     
    			auth = (Authentification) ois.readObject();
    			System.out.println("Réponse lue depuis le serveur : "+auth.toString());
     
    			socket.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }

    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
     
    public class Serveur {
     
    	static ServerSocket socketserver = null;
    	static Socket socket;
    	static ObjectInputStream ois = null;
    	static ObjectOutputStream oos = null;
    	static Authentification auth;
     
    	public static void main(String[] args) {
    		try {
    			socketserver = new ServerSocket(8988);
    			System.out.println("Le serveur est à l'écoute du port "+ socketserver.getLocalPort());
    			socket = socketserver.accept();
    			System.out.println("Connexion client acceptée.");
    			ois = new ObjectInputStream(socket.getInputStream());
    			oos = new ObjectOutputStream(socket.getOutputStream());
     
    			auth = (Authentification) ois.readObject();
     
    			Authentification ath = new Authentification(auth.getLogin().toUpperCase(),auth.getMotpasse().toUpperCase());
    			oos.writeObject(ath);
     
    			socket.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }

  2. #2
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Quand tu crée un ObjectInputStream, le constructeur lit le début du stream pour y trouver la signature d'un ObjectStream. Comme à la fois ton client et ton serveur commencent par créer un ObjectInputStream, chacun attends que l'autre envoie le début du stream. Tu peux t'en sortir en retardant dans le client la création de l'ObjectInputStream après l'acquisition des données et l'envoi de l'objet, mais sur le long terme, il faut toujours penser à créer un thread séparé pour l'envoi et la lecture en relation client serveur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoyer un Objet via Socket
    Par t4rik9 dans le forum Langage
    Réponses: 3
    Dernier message: 17/11/2014, 02h03
  2. Envoyer un objet via Socket UDP
    Par lastico21000 dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 11/02/2012, 14h58
  3. Envoyer un objet avec un Intent
    Par glycerine dans le forum Android
    Réponses: 5
    Dernier message: 27/05/2011, 10h21
  4. Envoyer un objet avec un socket
    Par MAX-k dans le forum C#
    Réponses: 5
    Dernier message: 24/05/2011, 21h27
  5. pb de récupérer un objet avec socket en java
    Par rhifay dans le forum Linux
    Réponses: 0
    Dernier message: 19/07/2008, 11h56

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