Comment définir les option de socket (TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL) en java ou netty?

En C/Linux, il est facile de définir une valeur différente au sujet de ces options de prise pour chaque KEEPALIVE connexion tcp indépendamment.

TCP_KEEPCNT (depuis Linux 2.4)
Le nombre maximum de messages keepalive envoyés par TCP avant la suppression de la connexion. Cette option ne doit pas être utilisé dans le code destinés à être portables.

TCP_KEEPIDLE (depuis Linux 2.4)
Le temps (en secondes) la connexion doit rester inactive avant d'TCP commence à envoyer des keepalive sondes, si l'option de socket SO_KEEPALIVE a été mis sur ce socket.
Cette option ne doit pas être utilisé dans le code destinés à être portables.

TCP_KEEPINTVL (depuis Linux 2.4)
Le temps (en secondes) entre deux messages keepalive. Cette option ne doit pas être utilisé dans le code destinés à être portables.

Dans netty ou java, comment définir les trois options de socket socket? Je sais qu'il n'est pas portable moyen de le résoudre, mais seulement sous Linux, puis-je configurer ces options de prise?

Comme indiqué dans la documentation ci-dessus, ces options "[...]ne devraient pas être utilisés dans le code conçu pour être portable". Vous auriez besoin d'utiliser JNI (ou mieux, la "JNA") et de mettre en œuvre votre propre Socket/SocketFactory si vous souhaitez utiliser ces
reportez-vous à stackoverflow.com/questions/6161437/setsockopt-in-java-programs
Merci à tous. Il est nécessaire d'utiliser JNA à mettre en œuvre.
Pour le C++, il est décrit dans ce post: Socket keepalive ne fonctionne pas.

OriginalL'auteur Yang Juven | 2014-03-18