Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème application Client/serveur

    18 février 2012 à 12:06:03

    Bonjour, je viens de faire un départ d'application client serveur, qui n'a pas l'air de fonctionner :
    Voici le code source du client :
    package common;
    
    import java.io.IOException;
    import java.net.Socket;
    
    public class Orime {
    
    	public static Socket socket = null;
    	public static Thread t;
    
    	public static void main(String[] args) {
    		try {
    			System.out.println("Connexion au serveur...");
    			socket = new Socket("localhost", 1200);
    			System.out.println("Connexion établie !");
    			t = new Thread(new Connexion(socket));
    			t.start();
    			socket.close();
    
    		} catch (IOException e) {
    			System.out.println("Connexion impossible !");
    		}
    	}
    
    }
    

    package common;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.util.Scanner;
    
    public class Connexion implements Runnable {
    
    	private Socket socket = null;
    	public static Thread t2;
    	public static String login = null, password = null;
    	private PrintWriter out = null;
    	private BufferedReader in = null;
    	private Scanner sc = null;
    	private boolean connected = false;
    
    	public Connexion(Socket s) {
    		socket = s;
    	}
    
    	public void run() {
    
    		try {
    			out = new PrintWriter(socket.getOutputStream());
    			in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    			sc = new Scanner(System.in);
    
    			while (!connected) {
    				System.out.println(in.readLine());
    				login = sc.nextLine();
    				out.println(login);
    				out.flush();
    
    				System.out.println(in.readLine());
    				password = sc.nextLine();
    				out.println(password);
    				out.flush();
    				if (in.readLine().equals("1111")) {
    					System.out.println("Vous etes connecté");
    					connected = true;
    
    				} else {
    					System.err.println("Login ou mot de passe incorrect");
    				}
    
    			}
    
    		} catch (IOException e) {
    			System.err.println("Le serveur ne répond pas...");
    		}
    
    	}
    }
    



    voici le code source de serveur :
    package common;
    
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.util.Scanner;
    
    public class Orime {
    
    	public static Thread t = null;
    	public static ServerSocket socket = null;
    	public static int loginPort;
    
    	public static void main(String[] args) {
    
    		try {
    			Scanner sc = new Scanner(System.in);
    			System.out.println("Entrez le numéro de port d'écoute : ");
    			loginPort = sc.nextInt();
    			socket = new ServerSocket(loginPort);
    			System.out.println("Lancement du serveur sur le port " + loginPort);
    			t = new Thread(new Client_accept(socket));
    			t.start();
    		} catch (IOException e) {
    			e.printStackTrace();
    
    		}
    
    	}
    
    }
    

    package common;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    public class Connexion implements Runnable {
    
    	private Socket socket = null;
    	private String login = null, password = null;
    	private PrintWriter out = null;
    	private BufferedReader in = null;
    	private boolean connected = false;
    
    	public Connexion(Socket s) {
    		socket = s;
    	}
    	public boolean verif_id(String login, String password) {
    		boolean ok = ((login.equals("bonjour")) && (password.equals("bonjour")));
    		return ok;
    	}
    
    	public void run() {
    		try {
    			out = new PrintWriter(socket.getOutputStream());
    			in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    			while(!connected) {
    				out.println("Veuillez saisir votre identifiant : ");
    				out.flush();
    				login = in.readLine();
    				
    				out.println("Veuillez saisir votre mot de passe : ");
    				out.flush();
    				password = in.readLine();
    				connected = verif_id(login,password);
    				if (!connected) {
    					out.println("0000");
    					out.flush();
    				}
    			}
    			out.println("1111");
    			System.out.println("Le client " + login + " vient de se connecter.");
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    
    	}
    
    }
    

    package common;
    
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Client_accept implements Runnable {
    
    	private ServerSocket server;
    	private Socket socket;
    	public Thread t1;
    
    	public Client_accept(ServerSocket s) {
    
    		server = s;
    
    	}
    
    	public void run() {
    
    		try {
    			while (true) {
    				socket = server.accept();
    				t1 = new Thread(new Connexion(socket));
    				t1.start();
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    
    	}
    
    }
    

    j'ai aucune erreur au lancement du serveur, mais lorsque que je lance le client j'ai l'exception suivante :
    Exception in thread "Thread-1" java.lang.NullPointerException :
    at common.Connexion.verif_id(Connexion.java:37)
    at common.Connexion.run(Unknown Source)
    at java.lang.Thread?run(Unknown Service)

    Que faire ?
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      18 février 2012 à 12:39:52

      Salut, travaillant quasiment tout le temps sous Netbeans, je ne peux pas vraiment t'aider. Cependant je te reccomande ce mini tuto sur la création manuelle d'une archive JAR exécutable ! Il ne t'expliquera pas directement comment résoudre ton problème mais je pense qu'il répondra à pas mal de tes questions :)
      • Partager sur Facebook
      • Partager sur Twitter
        18 février 2012 à 12:46:27

        Merci Rayzune, mais ayant résolu mon problème juste avant, j'ai changé mon post avec mon second problème ;)
        • Partager sur Facebook
        • Partager sur Twitter

        Problème application Client/serveur

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown