[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 :lol:.
Client
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
| 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:
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:
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 :)