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
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
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(); } } }
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.
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(); } } }
merci d'avance.
cyrill
Partager