Bonjour,

Je tente d'écrire un tableau de byte dans une socket d'un serveur. Mais le code suivant me renvoie une exception systématique :

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
 
try {
    int serverPort = config.getPort();
    ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
    ServerSocket server = serverSocketChannel.socket();
    server.bind(new InetSocketAddress(serverPort));
 
    final Socket socket = server.accept();
    final DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
 
    Thread thread = new Thread() {
        public void run() {
            try {
                while(true) {
                    dos.write(new byte [] { 
                        0, 0, 0, 64, 0, 50, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, -47, 32, -38, 71, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 35, 0, 0, 0, 105, -91, -85, 29, 0, 0, 48, 29, 64, 0, 0, 0, -128, -73, -44, -1
                    });
                    dos.flush();
                    Thread.sleep(50);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }	
    };
    thread.run();
}
catch (IOException e) {
    e.printStackTrace();
}
L'exception en question :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
java.io.IOException: Une connexion établie a été abandonnée par un logiciel de votre ordinateur hôte
	at sun.nio.ch.SocketDispatcher.write0(Native Method)
	at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:33)
	at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:104)
	at sun.nio.ch.IOUtil.write(IOUtil.java:75)
	at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:334)
	at java.nio.channels.Channels.write(Channels.java:60)
	at java.nio.channels.Channels.access$000(Channels.java:47)
	at java.nio.channels.Channels$1.write(Channels.java:134)
	at java.io.DataOutputStream.write(DataOutputStream.java:90)
	at java.io.FilterOutputStream.write(FilterOutputStream.java:80)
J'ai beau chercher, je ne comprend vraiment pas.. Un byte est bien codé sur 8bits de -127 à 128 inclus...

J'ai tenté avec un tableau de byte contenant 2 zéro et idem, j'ai la même exception... Je dois passer à côté d'un truc mais je ne vois vraiment pas quoi..