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

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(); 
            }
        }
    }
}
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
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();
            }
        }
    }
}
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.

Quelqu'un a une idée pour me dépanner?

Merci d'avance