Bonjour,
Je suis confronté à un petit problème avec l'utilisation des Selector sur des sockets.
J'ai un programme qui doit ouvrir des connections sockets vers des serveurs et se mettre en attente de messages sur ces sockets. (ce sont les specs, je ne peux pas changer ce comportement)
Pour faire cela, je crée des SocketChannel comme suit:
SocketChannel socketChannel = SocketChannel.open();
socketChannel.connect(new InetSocketAddress(server, port));
Ensuite, je crée un Selector et j'enregistre mes socketChannel avec ce selector pour des événements de type READ.
Selector selector = Selector.open();
socketChannel.configureBlocking(false);
SelectionKey key = socketChannel.register(selector, SelectionKey.OP_READ);
Je suis alors prêt pour attendre des événements sur mes sockets avec:
int n = selector.select();
Cet appel est censé être bloquant or, il sort tout de suite avec n == 0 alors que les serveurs distants n'envoient aucun message.
Dans la littérature, je ne trouve des exemples que pour des ServerSocketChannel et des SocketChannel issus d'un serverSocketChannel.accept(), bref, pour un serveur pur.
Avez vous une idée de la manière de procéder dans mon exemple ?
Merci d'avance.
Partager