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 :

Communication Serializable par Socket


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 96
    Par défaut Communication Serializable par Socket
    Je travaille sur une Appi qui utilise une classe Serializable que je passe par une Socket et que je reprend sur une autre instance.

    ma classe serializable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Message implements Serializable {
     
        public String name;
        public String channel;
        public String message;
     
        public Message() {
     
        }
     
    }
    Envoyer:
    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
    sbox.addKeyListener(new KeyAdapter() {
                public void keyPressed(KeyEvent evt) {
                    if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
                        try {
                            Socket s = new Socket("127.0.0.1", 1299);
                            Message msg = new Message();
                            msg.name = "GetTriggerUnit-";
                            msg.channel = "Main Channel";
                            msg.message = sbox.getText();
                            ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
                            out.writeObject(msg);
                            out.close();
                            sbox.setText("");
                        } catch (Exception ex) {ex.printStackTrace();}
                    }
                }
            });
    Recevoir:
    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
        private Message curr;
     
        private void startReceiving() {
            Thread t = new Thread() {
                public void run() {
                    try {
                        while (true) {
                            Socket s = new Socket("127.0.0.1", 1299);
                            ObjectInputStream in = new ObjectInputStream(s.getInputStream());
                            System.out.println(in);
                            Message msg = (Message) in.readObject();
                            if (curr != msg) {
                                pane.setText(pane.getText() + msg.name + " has said " + msg.message + " in channel " + msg.channel + System.getProperty("line.separator"));
                                curr = msg;
                            }
                        }
                    } catch (Exception ex) {ex.printStackTrace();}
                }
            };
            t.start();
        }
    Les sockets n'arrive pas a communiquer ensenmble. Il n'y a auncune erreur...

    Oh! et voici mon serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        public main() {
            try {
                ServerSocket ss = new ServerSocket(1299);
                while (true) {
                    Socket s = ss.accept();
                    System.out.println(s.getInetAddress());
                }
            } catch (IOException ex) {}
        }

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Ce n'est pas comme ça que cela marche, tu dois utiliser le socket que tu récupères dans le serveur via la méthode accept.

    Regarde le tuto de sun, ça t'expliquera comment ça marche.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 96
    Par défaut
    Ok.. Voici le nouveau code.. Il ne marche toujours pas.

    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
     
    package server;
     
    import java.net.ServerSocket;
    import java.net.Socket;
     
    public class Main {
     
        public static void main(String[] args) {
            try {
                ServerSocket server = new ServerSocket(3901);
                while (true) {
                    Socket client = server.accept();
                }
            } catch (Exception ex) {ex.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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    package chat;
     
    import java.net.*;
    import java.io.*;
     
    public class Main {
     
        private Socket socket;
        private ObjectOutputStream out;
        private ObjectInputStream in;
     
        public Main() {
            try {
                socket = new Socket("127.0.0.1", 3901);
                out = new ObjectOutputStream(socket.getOutputStream());
                in = new ObjectInputStream(socket.getInputStream());
                Message msg = new Message();
                msg.message = "Hello";
                msg.name = "GetTrihher";
                out.writeObject(msg);
            } catch (Exception ex) {ex.printStackTrace();}
            start();
        }
     
        private void start() {
            Thread t = new Thread() {
                public void run() {
                    while (true) {
                        try {
                            in.reset();
                            Message msg = (Message) in.readObject();
                            System.out.println(msg.name);
                        } catch (Exception ex) {ex.printStackTrace();}
                    }
                }
            };
            t.start();
        }
     
        public static void main(String[] args) {
            new Main();
        }
     
    }
     
     
    class Message implements Serializable {
     
        String name;
        String message;
     
        public Message() {
     
        }
     
    }

  4. #4
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Ton client écoute les messages que son interlocuteur (le serveur) lui envoie.
    Or le serveur ne lui envoie rien...

    Ton client envoie un message, mais le serveur n'écoute pas, donc il n'est pas traité.

    Pour un résultat rapide, déplace ton code d'écoute dans ton serveur, tu devrais voir qqchose.

Discussions similaires

  1. Communication par socket
    Par cybermarcel dans le forum Ruby
    Réponses: 5
    Dernier message: 14/01/2007, 23h08
  2. communication C++ C# par socket
    Par greenzephyr dans le forum C++/CLI
    Réponses: 2
    Dernier message: 16/11/2006, 10h12
  3. Problème de communication par socket
    Par odjosc dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 20/06/2006, 14h57
  4. [Omnis] Communication par Socket
    Par y0p dans le forum WinDev
    Réponses: 4
    Dernier message: 15/06/2006, 09h02
  5. Problème de communication par sockets
    Par Linio dans le forum Entrée/Sortie
    Réponses: 33
    Dernier message: 06/05/2006, 18h50

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