Bonsoir,

Je suis en train de m'entrainer avec les sockets et grace à certains tuto, j'ai réussi à faire quelque chose, maintenant pour m'entrainer, j'aimerais créer un mini-programme style msn mais tres basique; c'est à dire, chaque client peut envoyer un message et tous les autres le voient affichés dans un Jpanel.

J'arrive parfaitement à faire ca avec un seul client(mais ca sert à rien ^^), mais je ne sais trop comment m'y prendre pour le faire avec plusieurs... On m'a dit d'employer des threads mais je ne vois pas trop comment faire non plus...

Auriez-vous une idée ? Pour le moment mon code ressemble à ca :

classe Server
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
package principal;
import socket.SocketFonction;
 
public class Server {
	public static SocketFonction net = new SocketFonction();
 
	public static void main(String[] args) {
		net.CreateServeur(9999);
		String msg;
		String reponse;
		for(;;){
			msg = net.getMsg();
			reponse = msg;
			net.sendMsg(reponse);
		}
	}
}
classe Gui(juste le main et l'event
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
public static SocketFonction net = new SocketFonction();
public static void main(String[] args){
		net.CreateClient("127.0.0.1",9999);
		Gui gui = new Gui();
		gui.setVisible(true);
		for(;;){
			Texte = Texte + net.getMsg() + "\n";
			textArea.setText(Texte);
		}
	}
public void keyPressed(KeyEvent e) {
					 if(e.getKeyCode() == KeyEvent.VK_ENTER){
						net.sendMsg(jTextField1.getText() + " : "+ jTextField.getText());
						jTextField.setText(null);
					 }
				}
La classe dans laquelle j'ai les diverses fonctions :
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
public class SocketFonction {
	ServerSocket SServer;
	Socket SClient;
	DataInputStream is;
    PrintStream os;
 
	public boolean CreateServeur(int port){
		System.out.println("Wait client");
		try {
			SServer = new ServerSocket(port);
		} catch (IOException e) {
			e.printStackTrace();
		}
 
		try {
			SClient = SServer.accept();
	        is = new DataInputStream(SClient.getInputStream());
	        os = new PrintStream(SClient.getOutputStream());   
	    }catch (IOException e) {
	           System.out.println(e);
	           return false;
	    }
	    System.out.println("client connected");
	    return true;
	}
 
	public boolean CreateClient(String address,int port){
		try {
			SClient = new Socket(address, port);
		} catch (UnknownHostException e) {
			e.printStackTrace();
			return false;
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
		try {
			is = new DataInputStream(SClient.getInputStream());
			os = new PrintStream(SClient.getOutputStream());
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}	
		return true;
	}
 
	//Envoie un message
    public boolean sendMsg(String msg){
    	msg.replace('\n',' '); // les retour a la ligne sont remplacé par des espaces
    	os.println(msg);
    	return true;
    }
 
    //Reçoit un message
    public String getMsg(){
    	try{
    		return is.readLine();
     	}catch (IOException e){
     		System.out.println(e);
     		return null;
	    }
    }
voila....

est ce que ce code est bien ou pas du tout ?

J'aimerais aussi créer une interface principale sur laquelle on pourrait créer un serveur et se connecter à un serveur, est ce possible ?

Je sais que je demande beaucoup...

Merci d'avance de ceux qui auront le courage de s'attarder sur ce post et de m'aider à surmonter mon ignorance ^^