Bonjour,
je suis actuellement sur le développement un protocole de communication TCP/IP en java et je rencontre quelques problèmes:
Voici le code associé au travail que j'ai fais:
Classe serveur
Classe 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 import java.net.*; import java.io.*; public class server { private static byte[] _message = {'t','e','s','t'}; private static int _port; private static ServerSocket _socket; private static byte[] _start = {'s','t','a','r','t'}; public static void main(String[] args) { InputStream input = null; OutputStream output = null; try { _port = (args.length == 1) ? Integer.parseInt(args[0]) : 8080; _socket = new ServerSocket(_port); System.out.println("TCP server is running on " + _port + "..."); int i = 0; int tmp = 0; byte[] var = new byte[10000]; // Accept new TCP client Socket client = _socket.accept(); // Open input stream input = client.getInputStream(); // Open output stream output = client.getOutputStream(); tmp = input.read(); var[i] = (byte)tmp; System.out.println( var[i] ); while(tmp != -1) { tmp = input.read(); var[i] = (byte)tmp; System.out.println( var[i] ); i++; } client.close(); } catch (IOException e) { e.printStackTrace(); } finally { try { _socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
Lorsque le serveur est lancé, il attend la connexion d'un client. Le client lui transmet directement le message "start", à la réception de ce message, le serveur lui répond un message "test". Le problème que je rencontre est à ce niveau, le serveur reçoit bien le message start et ensuite tout se bloque. J'ai constaté que cela venait du client qui est lui dans une attente d'un message du serveur, mais je ne comprend pas pourquoi.
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 import java.net.*; import java.io.*; class client { private static int _port; private static Socket _socket; public static void main(String[] args) { byte [] start = {'s','t','a','r','t'}; InputStream input = null; OutputStream output = null; try { _port = (args.length == 1) ? Integer.parseInt(args[0]) : 8080; InetAddress serveur = InetAddress.getByName("10.1.1.25"); _socket = new Socket(serveur, _port); int i=0; int tmp = 0; byte[] var = new byte[100]; // Open stream input = _socket.getInputStream(); output = _socket.getOutputStream(); output.write(start); tmp = input.read(); //System.out.println( tmp ); var[i] = (byte)tmp; //System.out.println( var[i] ); i++; } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { input.close(); _socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
Quelqu'un a une idée pour me dépanner?
Merci d'avance
Partager