Client-Serveur

Fermé
David - 30 avril 2011 à 17:22
 David - 30 avril 2011 à 17:24
Bonjour,

Je suis en train de créer un client serveur, tt se passe bien sauf l'envoi des messages, quand je clique sur envoyer, rien ne se passe, si quelqu'un peut m'aider svp. voici le code source du serveur, puis du client

//Serveur


import java.io.*;

import org.eclipse.swt.graphics.Image;
import java.net.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.graphics.*;


class Serverr extends Thread {

private Socket socket;
private BufferedReader in;
private PrintWriter out;


public Serverr (Socket s) throws IOException {
socket= s;
in= new BufferedReader( new InputStreamReader( socket.getInputStream()));
out= new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream())), true);
start();
}




}


//la classe principale

public class Server {
Shell shell;
Image image;
ServerSocket s;
BufferedReader in;
Text msgRecu;
Button start;
Socket socket;
Button close;
boolean isActive;
String line;

// la méthode run

public void run () {
try {
while (true) {
String line= in.readLine();
if (line.equals("END")) break;
System.out.println(line);
}
System.out.println("Closing...");
}catch (IOException e) {
System.err.println("IOException");
} finally {
try {
socket.close();
} catch (IOException e) {
System.out.println("Socket not closed");
}
}
}



//le constructeur

public Server () throws IOException {

Display display= new Display();

shell= new Shell(display);
shell.setSize(400,400);

msgRecu= new Text(shell, SWT.CENTER);
msgRecu.setBackground(new Color (display, 255,255,255));
msgRecu.setBounds(60, 20, 300, 275);

start= new Button(shell, SWT.CENTER);
start.setBounds(100, 300, 100, 55);
start.setText("Start");
close= new Button(shell, SWT.CENTER);
close.setBounds(220, 300, 100, 55);
close.setText("Close");




shell.open();











class Handler extends Thread{
Socket socket;
Handler(Socket socket){
super();
this.socket=socket;
}
/*public void run(){
try{
System.out.println("connexion accepted");
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg="";
while((msg=in.readLine())!=null) { // boucle infinie
label.setText(msg);
}
}
catch(IOException e){ System.out.println("Exception");}
}*/
}




class Starter extends Thread{
public void run(){
try{
s= new ServerSocket(6000);

while(isActive){
new Handler(s.accept()).start();

}
}
catch(IOException e){}
}
}




Listener listener2= new Listener() {
public void handleEvent (Event event) {

new Starter().start();
}
};
start.addListener(SWT.Selection, listener2);












while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();

}



static final int PORT = 8080;


//méthode main

public static void main(String[] args)
throws IOException {



new Server();



ServerSocket s= new ServerSocket(PORT);
System.out.println("Server Started");
try {
while(true) {
// Blocks until a connection occurs:
Socket socket = s.accept();
try {
new Serverr(socket);
} catch(IOException e) {
// If it fails, close the socket,
// otherwise the thread will close it:
socket.close();
}
}
} finally {
s.close();
}
}
}



///////////////////Le client



import java.net.*;

import java.io.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.graphics.*;


//Classe principale


public class Client {

Shell shell;
PrintWriter out;
Text text;
Socket socket;
InetAddress addr;
Button disconnect;
Button connect;
Button send;

DataOutputStream sortieVersServeur;



//le constructeur


public Client() {
Display display= new Display();
shell= new Shell(display);
shell.setSize(600,500);
shell.setLocation(500, 100);

Image image= new Image(display,"C:/Documents and Settings/Utilisateur/Mes documents/bleu5.JPG");
shell.setBackgroundImage(image);

send= new Button(shell, SWT.CENTER);
send.setBounds(220, 270, 100, 55);
send.setText("Send");
send.setBackground(new Color (display,00,00,00));

connect= new Button(shell, SWT.CENTER);
connect.setBounds(340, 270, 100, 55);
connect.setText("Connect");

disconnect= new Button(shell, SWT.CENTER);
disconnect.setText("Disconect");
disconnect.setBounds(460, 270, 100, 55);

text= new Text(shell, SWT.LEFT);
text.setBackground(new Color (display,255,255,255));
text.setBounds(170, 350, 400, 100);





shell.open();


//Action du boutton Connect


Listener listener3= new Listener() {
public void handleEvent (Event event) {

try{

socket= new Socket("localhost", 8080);

connect.setEnabled(false);

send.setEnabled(true);

text.setEnabled(true);

disconnect.setEnabled(true);

}

catch(IOException e){}
}
};
connect.addListener(SWT.Selection, listener3);




//action du boutton disconect


Listener listener2= new Listener() {
public void handleEvent (Event event) {
try{

socket.close();

connect.setEnabled(true);
//send.setEnabled(false);

disconnect.setEnabled(false);

}

catch(IOException e) {}
}
};
disconnect.addListener(SWT.Selection, listener2);





//action du boutton send


Listener listener= new Listener() {
public void handleEvent (Event event) {


////////////////////////////c'est ici que je n'arrive pas a envoyer


}
};

send.addListener(SWT.Selection, listener);





while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}


//la méthode main

public static void main(String[] args) throws IOException {


new Client();




InetAddress addr= InetAddress.getByName(null);
System.out.println("addr =" +addr);
Socket socket= new Socket(addr, Server.PORT);
try {
System.out.println("Socket =" +socket);
BufferedReader in= new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out= new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
for (int i= 0; i<10; i++) {
out.println("howdy" +i);
String msg= in.readLine();
System.out.println(msg);
}
out.println("END");
}
finally {
System.out.println("Closing...");
socket.close();
}

}

}


////////voila, ils se connectent normalement mais pour envoyer j'ai essayer tt, mais ça marche pas. Merci d'avance a tous.
Amicalement David.



1 réponse

Juste quelque chose, en copiant je me suis trompé, dans les déclarations globale dans la classe principale, il ya String msg; et pas String line;
0