En fait, j'ai encore un problème sur lequel je coince,
voici le morceau de code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| try{
socketChannel = SocketChannel.open(new InetSocketAddress(destInet, 2000));
}
catch(IOException ioe){
...
}
stockSockets.put(socketChannel);
try{
Socket socket = socketChannel.socket();
ObjectOutputStream dos = new ObjectOutputStream(socket.getOutputStream());
dos.writeObject(message);
dos.close();
}
catch(IOException ioe){
...
} |
et voici le code de stockSocket.put() :
1 2 3 4 5 6 7 8 9 10 11
| synchronized public void put(SocketChannel socketChannel){
try{
socketChannel.configureBlocking(false);
socketChannel.register(selector, SelectionKey.OP_READ);
}
catch(){
...
}
...
} |
Mon problème est que mon programme bloque environ une minute entre le configureBlocking() et le register(), avant de finalement continuer et de me faire une IllegalBlockingModeException au moment où il arrive à la ligne :
ObjectOutputStream dos = new ObjectOutputStream(socket.getOutputStream());
Si je retire le configureBlocking(false), le programme lève une IllegalBlockingModeException au moment de faire le register()...
J'ai pas mal cherché, mais je ne comprend pas vraiment la nature de cette exception, est-ce que qqn aurait une idée ?
Partager