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 :

[Socket] Envoyer données client vers serveur et inversement


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Par défaut [Socket] Envoyer données client vers serveur et inversement
    Bonjour,

    Après maint recopiage, copier-coller, je n'arrive toujours pas à communiquer avec mon "serveur" mutlithread (exemple repris du net).
    J'arrive à me connecter dessus mais n'arrive pas à lui envoyer de messages... Il doit manquer un truc important .

    Client

    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
    import java.io.*;
    import java.net.*;
    import java.util.Scanner;
     
    public class Client {
     
        public Client() {
            Scanner keyboard = new Scanner(System.in);
     
            try {
                Socket socket = new Socket("localhost", 8080);
                BufferedReader from_server = new BufferedReader(
                        new InputStreamReader(socket.getInputStream()));
                PrintWriter to_server = new PrintWriter(socket.getOutputStream());
     
                System.out.println("Established connection");
                while (true) {
                    System.out.print("You> ");
                    String line = keyboard.nextLine();
                    to_server.write(line);
                    to_server.flush();
                    if (line.equals("exit")) break;
                }
            } catch (IOException ioe) {
                System.out.println(ioe.getMessage());
            }
        }
     
        public static void main(String[] args) {
            Client client = new Client();
        }
    }

    Serveur

    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
    package Clients_Server;
     
    import java.io.*;
    import java.net.*;
     
    public class Server {
    	public static void main(String args[]) {
    		int nreq = 1;
    		try {
    			ServerSocket ssocket = new ServerSocket(8080);
     
    			while(true) {
    				Socket socket = ssocket.accept();
    				System.out.println("Creating thread...");
    				Thread t = new ThreadHandler(socket, nreq);
    				t.start();
    				nreq++;
    			}
    		} catch(Exception e) {
    			System.out.println("IO error: " + e.getMessage());
    		}
    	}
    }

    La prise en charge du multithread

    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
    package Clients_Server;
     
    import java.io.*;
    import java.net.*;
     
    public class ThreadHandler extends Thread {
     
        Socket socket;
        int n;
     
        public ThreadHandler(Socket socket, int n) {
            this.socket = socket;
            this.n = n;
            run();
        }
     
        public void run() {
            try {
                BufferedReader plec = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                PrintWriter pred = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
                        socket.getOutputStream())));
                pred.write("Hello :: enter exit to exit ;)");
     
                while (true) {
                    String line = plec.readLine();
                    System.out.println(line);
                    pred.println(line);
                    plec.readLine();
                    if (line.trim().equalsIgnoreCase("exit")) {
                        break;
                    }
                }
                socket.close();
                plec.close();
                pred.close();
            } catch (Exception e) {
                System.out.println("IO errer: " + e.getMessage());
            }
        }
    }

    Merci pour votre aide

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 691
    Par défaut
    Il y a au moins un problème avec ta gestion du multithreading. Pour démarrer un nouveau thread il faut faire appel à la méthode start(). Cela executera la méthode run() dans un nouveau thread.
    Si tu appelle run() directement, il est exécute dans le thread courant.

Discussions similaires

  1. transmission donnée javascript vers serveur
    Par benneb dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/09/2007, 22h36
  2. [AJAX] Retrouver xml envoyé du client au serveur (via méthode POST)
    Par leszek dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/05/2006, 16h07
  3. Transfert de fichier Client vers Serveur via INDY erreur ?
    Par bzh56 dans le forum Web & réseau
    Réponses: 2
    Dernier message: 20/03/2006, 10h34
  4. [Mysql] transfert données ajoutées vers serveur distant
    Par hanane28 dans le forum Administration
    Réponses: 3
    Dernier message: 20/11/2005, 19h06
  5. Réplication de base Client vers Serveur
    Par lil_jam63 dans le forum Administration
    Réponses: 3
    Dernier message: 18/06/2005, 21h57

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