Bonsoir !
Je commence juste avec les Sockets (enfin… je suis depuis ce matin sur le même problème ) en Java, et je rencontre un problème.
Avant de vous expliquez, voici mon code :
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | public class GuiFrame extends JFrame implements Runnable, ActionListener { private final static String serverIp = "192.168.1.22"; private final static int serverPort = 2500; private ServerSocket serverSocket; private Socket clientSocket; private JButton hostButton; private JButton joinButton; private boolean ready = false; private boolean host = false; public GuiFrame() { super.setSize(800, 600); super.setTitle("Castle Goblins"); super.setLocationRelativeTo(null); super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().setLayout(new FlowLayout()); hostButton = new JButton("Héberger"); joinButton = new JButton("Rejoindre"); hostButton.addActionListener(this); joinButton.addActionListener(this); getContentPane().add(hostButton); getContentPane().add(joinButton); Thread thread = new Thread(this); thread.start(); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == hostButton) { // Serveur try { serverSocket = new ServerSocket(serverPort); ready = true; host = true; System.out.println("Serveur Socket : OK"); } catch (IOException ex) { System.err.println(ex.getMessage()); } } if (e.getSource() == joinButton) { // Client try { clientSocket = new Socket(serverIp, serverPort); ready = true; host = false; System.out.println("Client Socket : OK"); OutputStream flux = clientSocket.getOutputStream(); OutputStreamWriter sortie = new OutputStreamWriter(flux); sortie.write("Nouveau !"); sortie.flush(); } catch (IOException ex) { System.err.println(ex.getMessage()); } } } @Override public void run() { while (true) { System.out.print(""); if (ready) { // Serveur if (host) { try { Socket socket = serverSocket.accept(); InputStream flux = socket.getInputStream(); BufferedReader entree = new BufferedReader(new InputStreamReader(flux)); String message = entree.readLine(); System.out.println("Message : " + message); } catch (IOException ex) { System.err.println(ex.getMessage()); } } // Client if (!host) { } } } } } |
J'ai donc le serveur et le client dans la même application, avec donc deux boutons : Un pour démarrer le serveur, l'autre pour s'y connecter.
Le problème, c'est que quand je lance l'application deux fois (je dit "Application" mais je parle là d'une version Linux), une fois pour le serveur et une fois pour le client, et que je me connecte via le client, le serveur ne reçois le message que lorsque le client ferme le programme…
Du coup, je comprend plus grand chose maintenant.
Quelqu'un pour m'aider ?
Merci !
+0
-0