Bonjour à tous,

Dans le cadre d'un cours, je dois développer une petite application client-server en utilisant les sockets et le protocole TCP, donc avec ServerSocket. Pour le moment, je peux lancer mon serveur, et attendre sur des clients. J'ai mis une max de 2 clients autorisés pour les besoins de mon application. J'ai ensuite créer tout ce qu'il fallait pour pouvoir s'échanger des messages entre le client et le serveur mais sous forme de String uniquement.

Voici mon code actuellement

Classe du 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
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
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
 
 
public class Server {
 
	/**
         * @param args
         */
	public static void main(String[] args) {
		int listenPort = 2011;
 
		ServerSocket socketserver  ;		//utilisé pour accepter les connexions des clients
 
		try {
			socketserver = new ServerSocket(listenPort);
			System.out.println("Server.java : Server is up and listen for connexions on the port TCP#"+socketserver.getLocalPort());
			Thread t = new Thread(new getClients(socketserver));
			t.start();
		}catch (IOException e) {
			e.printStackTrace();
		}
 
	}
}
 
class getClients implements Runnable {
 
	private ServerSocket socketserver;
	private Socket socket;
	private int nC = 1;
 
	BufferedReader in;
	PrintWriter out;
 
	public getClients(ServerSocket socketServer){
		this.socketserver = socketServer;
	}
 
	/** For the thread */
	public void run() {
		try {
			while(nC <= 2){ //while there are no 2 players, we can't start the game 
				socket = socketserver.accept();
 
				InetAddress clientIP = socket.getInetAddress();
				int clientPort = socket.getPort();
				System.out.println("Server.java : the client #"+nC+ " ("+clientIP+":"+clientPort+") is now connected !");
 
				//send message to the client
				out = new PrintWriter(socket.getOutputStream());
		        out.println("Message from Server.java : You are now connected player#"+nC);		  
 
		        out.flush();
 
		        nC++;
			}
			System.out.println("Server.java : Start the game. Call Heger methods");
 
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 
}
Classe du 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
33
34
35
36
37
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
 
 
public class Client {
 
	/**
         * @param args
         */
	public static void main(String[] args) {
		Socket socket;
		BufferedReader in;
		PrintWriter out;
 
		try {
			socket = new Socket("localhost",2011);
			System.out.println("Client.java : Connexion Query send");
 
			//Get and display message from the server
			in = new BufferedReader (new InputStreamReader (socket.getInputStream()));
	        System.out.println(in.readLine());
 
			socket.close();
		}catch (UnknownHostException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
 
	}
 
}
Mon problème c'est que j'aurai besoin de transférer des objets et non pas de simple string. J'ai essayé pendant un bon moment mais je n'arrive pas à trouver la solution donc j'espère que vous pourrez m'aider.

merci d'avance.

cyrill