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