Bonjour à tous !
Pour ceux qui aurait un peu suivi, je suis de nouveau de retour, avec un autre problème.
Lorsque j'utilise SocketChannel.write(ByteBuffer buf) sur un socket fermé (netstat me dit que le socket est dans l'état CLOSE_WAIT avec un buffer vide), la méthode n'échoue pas, et me renvoie le nombre d'octets envoyés, à savoir la taille du buffer.
Sauf que...
Les octets ne sont PAS envoyés, j'ai vérifié avec Wireshark, le serveur renvoie un paquet RST immédiatement.
J'ai donc un socket, fermé par le serveur, et je tente d'envoyer des données. Je voudrais m'assurer que ces données ont bien été envoyées. Le seul moyen (crade) que j'ai trouvé pour l'instant, c'est de faire une lecture non bloquante, et de voir si la méthode me retourne -1, signifiant la fin de flux.
J'ai la sensation de passer à côté de quelque chose, mais je ne comprends pas que la méthode write ne plante pas, alors que les octets ne sont pas envoyés au serveur, et que bien sûr, le SocketChannel est en mode bloquant.
Partager