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

Langage Java Discussion :

Problème Socket Java architecture Client Serveur


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Problème Socket Java architecture Client Serveur
    Bonsoir à tous,
    j'ai décidé de me lancer dans la programmation Sockets en JAVA. Je me suis donc lancer dans la réalisation d'un ptit t'chat.
    J'ai commencer par faire un ptit programme avec un serveur qui reçoit un message et qui l'affiche et un client qui se connecte au serveur et envois les fameux messages.

    Mais le soucis voilà, lorsque je lance mon serveur et mon client, le serveur m'affiche que la connexion s'est bien réalisé mais lorsque je veux envoyer un message avec la fenêtre client, le message part bien mais n'arrive jamais à destination... Le serveur reste en attente de lecture de données... je ne vois vraiment pas où est le soucis.
    Aidez - moi !
    Un grand merci d'avance!

    ma classe pour le serveur Test.java :

    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
    58
    59
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
     
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
     
     
    public class Test {
     
    	/**
             * @param args
             */
    	JFrame fen;
    	static JTextArea pan;
     
    	public Test()
    	{
    		pan = new JTextArea("");
    		fen = new JFrame("Serveur");
     
    		pan.setBounds(15, 15, 380, 380);
    		pan.setEditable(false);
     
    		fen.setSize(400, 400);
    		fen.setLocationRelativeTo(null);
    		fen.add(pan);
    		fen.setResizable(false);
    		fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		fen.setVisible(true);
    	}
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		new Test();
    		BufferedReader in;
    		char[] car = new char[1];
    		try {
    			ServerSocket serveur = new ServerSocket(2123);
    			Socket client = serveur.accept();
    			if(client.isBound()) pan.append("Client connécté");
    			client.setKeepAlive(true);
    			in = new BufferedReader(new InputStreamReader(client.getInputStream()));
    			while(in.read(car) != -1)
    			{
    				System.out.print(car[0]);
    				pan.append(""+car[0]);
    			}
     
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    	}
     
    }
    la classe pour le client TestClient.java

    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
    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
    87
    88
    89
    90
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
    import javax.swing.JFrame;
    import javax.swing.JTextField;
     
    public class TestClient implements KeyListener {
     
    	JFrame fen;
    	static JTextField pan;
    	static BufferedWriter out;
     
    	public TestClient()
    	{
    		pan = new JTextField();
    		fen = new JFrame("Client");
     
    		pan.setBounds(10, 180, 375, 30);
    		pan.addKeyListener(this);
     
    		fen.setLayout(null);
    		fen.setSize(400, 400);
    		fen.setLocationRelativeTo(null);
    		fen.add(pan);
    		fen.setResizable(false);
    		fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		fen.setVisible(true);
    	}
     
    	public static void main (String[] args){
    		new TestClient();
     
    		try {
    			InetAddress ipLocal;
    			ipLocal = InetAddress.getLocalHost();
    			//ipDistante = InetAddress.getByName("192.168.1.5");
    			Socket liaisonServeur = new Socket("192.168.1.5", 2123, ipLocal, 2321);
    			out = new BufferedWriter(new OutputStreamWriter(liaisonServeur.getOutputStream()));
    		} catch (UnknownHostException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
    	@Override
    	public void keyPressed(KeyEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void keyReleased(KeyEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void keyTyped(KeyEvent e) {
    		// TODO Auto-generated method stub
    		if(e.getKeyChar() =='\n'){
     
    			char[] tab = new char [pan.getText().length()];
    			for(int i=0; i<pan.getText().length(); i++)
    			{
    				tab[i] = pan.getText().charAt(i);
    			}
    			try {
    				System.out.println(tab);
    				out.write(tab);
     
    				pan.setText("");
    			} catch (IOException e1) {
    				// TODO Auto-generated catch block
    				System.out.println("Soucis!!");
    				e1.printStackTrace();
    			}
    		}
    	}
     
    }

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Tu utilises un buffer d'écriture pour ton client.
    Tu dois donc faire un flush chez le client pour envoyer les données au serveur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup !

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut autre probleme avec les socket
    Bonjour,
    je suis nouveau a ce forum et nouveaau en java socket
    bref, si je mets au niveau client l IP : 127.0.0.1 tout fonctionne
    Si je mets mon addresse public (une addresse que la societe a acheté)
    ca ne fonctionne pas
    merci vraiment pour votre
    je suis un stagiaire et j etouffe la

    code 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
    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
     
    import java.io.*;
    import java.net.*;
    public class Requester{
    	Socket requestSocket;
    	ObjectOutputStream out;
    	ObjectInputStream in;
    	String message;
    	Requester(){}
    	void run()
    	{
    		try{
    			//1. creating a socket to connect to the server
    			requestSocket = new Socket("91.213.82.54", 2012);
    			System.out.println("Connected to localhost in port 2004");
    			//2. get Input and Output streams
    			out = new ObjectOutputStream(requestSocket.getOutputStream());
    			out.flush();
    			in = new ObjectInputStream(requestSocket.getInputStream());
    			//3: Communicating with the server
    			String filepath= "D:\\Google Drive\\projet_teleassistance\\sdk\\trame.txt";
     
     
    			do{
    				try{
    					message = (String)in.readObject();
    					System.out.println("server>" + message);
    					BufferedReader buff = new BufferedReader(new FileReader(filepath));
    					String line;
    					while ((line = buff.readLine()) != null) {
    						sendMessage(line);
    					}
    					message = "bye";
    					sendMessage(message);
    				}
    				catch(ClassNotFoundException classNot){
    					System.err.println("data received in unknown format");
    				}
    			}while(!message.equals("bye"));
    		}
    		catch(UnknownHostException unknownHost){
    			System.err.println("You are trying to connect to an unknown host!");
    		}
    		catch(IOException ioException){
    			ioException.printStackTrace();
    		}
    		finally{
    			//4: Closing connection
    			try{
    				in.close();
    				out.close();
    				requestSocket.close();
    			}
    			catch(IOException ioException){
    				ioException.printStackTrace();
    			}
    		}
    	}
    	void sendMessage(String msg)
    	{
    		try{
    			out.writeObject(msg);
    			out.flush();
    			System.out.println("client>" + msg);
    		}
    		catch(IOException ioException){
    			ioException.printStackTrace();
    		}
    	}
    	public static void main(String args[])
    	{
    		Requester client = new Requester();
    		client.run();
    	}

    *******************************************
    CODE 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
    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
    import java.io.*;
    import java.net.*;
    public class Provider{
    	ServerSocket providerSocket;
    	Socket connection = null;
    	ObjectOutputStream out;
    	ObjectInputStream in;
    	String message;
    	Provider(){}
    	void run()
    	{
    		try{
    			//1. creating a server socket
    			providerSocket = new ServerSocket(2012, 10);
    			System.out.println("1");
    			//2. Wait for connection
    			System.out.println("Waiting for connection");
    			connection = providerSocket.accept();
    			System.out.println("Connection received from " + connection.getInetAddress().getHostName());
    			//3. get Input and Output streams
    			System.out.println("2");
    			out = new ObjectOutputStream(connection.getOutputStream());
    			out.flush();
    			System.out.println("3");
    			in = new ObjectInputStream(connection.getInputStream());
    			System.out.println("4");
    			sendMessage("Connection successful");
    			//4. The two parts communicate via the input and output streams
    			do{
    				try{
    					message = (String)in.readObject();
    					//traitement (message);
    					System.out.println("client>" + message);
    					if (message.equals("bye"))
    						sendMessage("bye");
    				}
    				catch(ClassNotFoundException classnot){
    					System.err.println("Data received in unknown format");
    				}
    			}while(!message.equals("bye"));
    		}
    		catch(IOException ioException){
    			ioException.printStackTrace();
    			System.out.println("couldn t listen on that port");
    		}
    		finally{
    			//4: Closing connection
    			try{
    				in.close();
    				out.close();
    				providerSocket.close();
    			}
    			catch(IOException ioException){
    				ioException.printStackTrace();
    			}
    		}
    	}
    	private void traitement(String message2) {
     
    	}
    	void sendMessage(String msg)
    	{
    		try{
    			out.writeObject(msg);
    			out.flush();
    			System.out.println("server>" + msg);
    		}
    		catch(IOException ioException){
    			ioException.printStackTrace();
    		}
    	}
     
    	public static void main(String args[])
    	{
    		Provider server = new Provider();
    		while(true){
    			server.run();
    		}
    	}
    }

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Comme d'hab', montrer l'erreur. On ne dit jamais "ça marche pas."
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Problème Socket Java architecture Serveur multi Client
    Par abdelhak_z dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 23/03/2015, 13h42
  2. Architecture Client/Serveur en java avec les sockets
    Par ram-0000 dans le forum Réseaux
    Réponses: 0
    Dernier message: 03/04/2013, 10h44
  3. Architecture Client/Serveur avec les SOCKET
    Par Zodiark dans le forum Langage
    Réponses: 2
    Dernier message: 26/05/2011, 14h11
  4. MySQL en architecture client/serveur
    Par KinF dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/09/2005, 22h10
  5. [Indy] Architecture Client/Serveur
    Par yongblood dans le forum Web & réseau
    Réponses: 9
    Dernier message: 22/08/2005, 01h18

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