2010-11-04 7 views
13

Je vois ces threads UNIX socket implementation for Java? et http://forums.sun.com/thread.jspa?threadID=713266.Socket de domaine UNIX en Java

Le deuxième lien indique que Java prend déjà en charge UNIX Domain Socket. Si c'est vrai, quelle classe dois-je implémenter à partir de Java? Le premier lien indique que Java ne prend pas en charge UNIX Domain Socket. Si vous avez besoin d'une socket de domaine UNIX, vous devez utiliser une bibliothèque tierce.

Alors, c'est quoi?

+4

Le deuxième lien (forums.sun.com) est cassé et semble conduire à une nulle part la page de premier plan d'Oracle. Aucune archive.org trouvée, BTW, malheureusement. – Tino

Répondre

13

Java ne peut pas créer ou accéder à des sockets de domaine Unix sans utiliser une bibliothèque tierce (native). Le dernier commentaire sur le deuxième lien ci-dessus mentionne ceci.

Le premier lien contient des informations correctes (et correctes).

16

Vous pouvez utiliser junixsocket: https://github.com/kohlschutter/junixsocket

Il prend en charge AF UNIX via une bibliothèque JNI, en utilisant l'API Java Socket. Il permet même de se connecter à MySQL depuis Java (Connector/J) via des sockets Unix.

+2

En novembre 2015, le projet * junixsocket * se trouve sur https://github.com/kohlschutter/junixsocket – VirtualMichael

+3

Attention, il ne supporte que les sockets Unix en mode STREAM. Vérifiez ce que votre serveur ouvre, avec 'netstat -ux'. Voir aussi [Différence entre les sockets STREAM et DATAGRAM du domaine UNIX] (http://stackoverflow.com/questions/13953912). – Florian

3

Netty il prend également en charge depuis la version 4.0.26: https://github.com/netty/netty/pull/3344

+1

Attention, il ne supporte que les sockets Unix en mode STREAM. Vérifiez ce que votre serveur ouvre, avec 'netstat -ux'. Voir aussi [Différence entre les sockets STREAM et DATAGRAM du domaine UNIX] (http://stackoverflow.com/questions/13953912). – Florian