Je sais qu'un SocketChannel est "averti" d'une connexion ordonnée fermée en recevant "-1" après avoir appelé read(). Mais comment me prévenir d'une connexion fermée désordonnée? (dans le cadre d'un serveur NIO entier, fonctionnant avec un sélecteur et des socketChannels non bloquants)Java socketChannel pour détecter une connexion fermée désordonnée
Répondre
Un write()
lancera IOException: connection reset
. Finalement. En raison de la mise en mémoire tampon TCP, il ne se produira pas sur la première écriture après l'échec.
Merci @EJP, mais c'est le seul moyen? Et si je m'attendais seulement à lire en tant que serveur? – slashms
Aussi, que se passera-t-il si après il est désordonné fermé, je vais appeler socket.close()? Va-t-il bloquer parce qu'il pourrait attendre la fermeture de la connexion TCP? – slashms
Vous pouvez ou non obtenir la réinitialisation si vous lisez seulement. 'close()' n'attend jamais, sauf si vous êtes en mode bloquant et que vous avez fait des choses idiotes à SO_LINGER. – EJP
Pourquoi certains -1 cette question? Quel est le problème à ce sujet? le minimum que vous pouvez est d'expliquer. – slashms
Vous avez reçu "-1" parce que vous avez eu une connexion ordonnée fermée :) – avim