7
votes

Utilisation de Java Nio avec des sockets de domaine UNIX en mode non bloquant avec des sélecteurs

Y a-t-il un moyen d'utiliser des prises de domaine UNIX avec Java Nio? Je veux utiliser Nio afin que je puisse utiliser des sélecteurs dessus dans un seul fil.

J'ai consulté Junixsocket mais il semble seulement supporter les sockets normaux pas Nio canaux ces sélecteurs de support.


0 commentaires

3 Réponses :


1
votes

Je confirme xnio prend en charge l'utilisation de sockets de domaine UNIX, comme "prises locales". En plus de la publication note de mention, voici:


6 commentaires

Merci. C'est une pitié que Xnio ne met pas en œuvre de sélecteurs, son un des principaux avantages de Nio.


Bien que la réponse n'inclut pas la prise en charge des sélecteurs sa meilleure réponse.


Mise à jour: Confirmation de la confirmation du développeur actuel sur Xnio qui ne prend en compte pas la prise de domaine UNIX. L'interface le définit, mais la mise en œuvre n'existe pas encore. Une implémentation est dans la fabrication ...


Alors tenez-vous .... Votre réponse dit que vous confirmez que Xnio prend en charge les sockets UNIX, mais il y a un commentaire ici qui dit que cela ne le fait pas. Un seul de vous est correct. Je descends cette réponse jusqu'à ce que cela soit résolu.


Wow, c'est un joli vieux fil. À ce moment-là, l'API de Xnio avait une interface qui vous a permis de choisir des sockets UNIX, mais j'avais une réponse de l'un des développeurs qu'une mise en œuvre n'était toujours pas disponible. Cela a peut-être changé, sa près de 2 ans maintenant depuis que j'ai demandé.


J'ai regardé dans le dernier code bêta 3.2 et on dirait que l'API est toujours là sans mise en œuvre. grepcode.com/file/repo1.maven.org/maven2/org.jboss.xnio/...



9
votes

Vous pouvez utiliser le projet JNR-UnixSocket ( https://github.com/jnr/jnr -unixsockt ) qui est la mise en œuvre la plus avancée que j'ai vue. C'est exactement ce que vous voulez: Sélecteurs de concepts NIO, canaux, etc.

look @ HTTPS: / /Github.com/jnr/jnr-unixsocket/tree/master/src/test/java/jnr/unixsocket/example


1 commentaires

je t'en prie. Je parviens à lire et à écrire une demande HTTP de Nginx Proxy au domaine de la prise Unix avec elle.



2
votes

JDK 16 a une prise en charge intégrée aux prises de domaine UNIX. Voici Un exemple de Oracle à propos de l'utiliser avec Nio


1 commentaires

C'est bon à entendre. Le projet que je travaillais est terminé depuis longtemps, mais il est bon de savoir pour des projets futurs.