Petite Application Client - Server qui ne fonctionne pas totalement - besoin d'explications
Bonjour,
J'ai juste voulu m'amuser à créer une Simple Application Client-Server pour communiquer avec mes camarades. Sauf qu'elle fonctionne partiellement car le server peut lire le premier flux de la socket mais lorsque la socket envoie un deuxième flux cela n'arrive plus au niveau du serveur.
Je suis perdu :(:( Merci d'avance pour vos conseils.
Voici le code :
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 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
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class ClientArmel extends Thread{
Socket s=null;
public ClientArmel() {
super();
try {
this.s=new Socket("localhost",300);
System.out.println("vous etes connecte au server!!!");
Thread th= new Thread(this);
th.start();
} catch (UnknownHostException e) {
} catch (IOException e) {
System.out.println("Impossible de se connecter au server");
}
}
public void run() {
try {
OutputStream os = s.getOutputStream();
PrintWriter pw= new PrintWriter(os,true);
InputStream in= s.getInputStream() ;
InputStreamReader isr= new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String message = null;
String rep =null;
while(true) {
Scanner entre= new Scanner(System.in);
message = entre.nextLine();
System.out.println(message);
pw.println(message);
pw.flush();
while( (rep=br.readLine())!=null ) {
System.out.println(rep);
}
entre.close();
br.close();
pw.close();
}
}catch(Exception ex) {
System.out.println(" Le client ne recoit pass le fluss !!");
}
}
public static void main(String[] args) {
new ClientArmel();
}
} |
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 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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
import org.omg.CORBA.portable.OutputStream;
public class ServerArmel extends Thread {
ServerSocket serverSocket ;
Socket client ;
static ServerArmel serverArmel ;
public ServerArmel() {
super();
serverArmel=this;
Thread thread = new Thread(this);
thread.start();
}
public void run() {
try {
serverSocket = new ServerSocket(300);
System.err.println("Le server est Connecte'");
}catch(Exception ex) {
System.err.println("Impossible de connecter le Server");
}
while(true) {
try {
client = serverSocket.accept();
System.err.println("le server attend une requtte ");
}catch(Exception ex) {
System.err.println("Problem de Connection avec le Client");
}
Thread thread = new Thread(new Conversation(client));
thread.start();
}
}
public static void main(String[] args) {
new ServerArmel ();
}
class Conversation extends Thread
{
Socket s =null;
public Conversation(Socket s) {
this.s=s;
}
public void run() {
boolean start= false;
while(!start) {
try {
InputStream in = s.getInputStream();
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
java.io.OutputStream os = s.getOutputStream();
PrintWriter pw= new PrintWriter(os,true);
String message =null;
Scanner rep=null;;
while(true) {
while( (message = br.readLine())!=null ) {
System.out.println("la socket a envoye un message");
System.out.println( s.getRemoteSocketAddress().toString()+" :"+message);
rep = new Scanner (System.in);
String reponse = rep.nextLine();
pw.println(reponse);
pw.flush();
}
br.close();
pw.close();
rep.close();
s.close();
}
}catch(Exception ex) {
System.out.println("Le server ne recoit pas le fluss !!!");
}
}
}
}
} |