2010-11-04 8 views
13

Ich sehe diese Themen UNIX socket implementation for Java? und http://forums.sun.com/thread.jspa?threadID=713266.UNIX-Domain-Socket in Java

Der zweite Link besagt, dass Java bereits UNIX Domain Socket unterstützt. Wenn das stimmt, welche Klasse muss ich aus Java implementieren ?.

Von der ersten Verknüpfung heißt es, dass Java den UNIX Domain Socket nicht unterstützt. Wenn Sie den UNIX Domain Socket benötigen, müssen Sie eine Bibliothek eines Drittanbieters verwenden.

Also, was ist das?

+4

Der zweite Link (forums.sun.com) gebrochen und scheint zu einem gewissen nirgendwo führenden Seite von Oracle zu führen. Kein Archiv gefunden, BTW, leider. – Tino

Antwort

13

Java kann keine Unix-Domain-Sockets erstellen oder darauf zugreifen, ohne eine (native) Bibliothek eines Drittanbieters zu verwenden. Der letzte Kommentar zum obigen zweiten Link erwähnt dies.

Der erste Link hat einige gute (und korrekte) Informationen darüber.

16

könnten Sie junixsocket verwenden: https://github.com/kohlschutter/junixsocket

Es bietet AF-UNIX-Unterstützung über eine JNI-Bibliothek, die Java-Socket API verwendet. Es ermöglicht sogar die Verbindung zu MySQL von Java (Connector/J) über Unix-Sockets.

+2

Stand: November 2015, das Projekt * junixsocket * befindet sich unter https://github.com/kohlschutter/junixsocket – VirtualMichael

+3

Achtung, es unterstützt nur Unix-Sockets im STREAM-Modus. Überprüfen Sie, was Ihr Server öffnet, mit 'netstat -ux'. Siehe auch [Unterschied zwischen UNIX-Domänen-STREAM- und DATAGRAM-Sockets] (http://stackoverflow.com/questions/13953912). – Florian

3

Netty unterstützt es auch seit Version 4.0.26: https://github.com/netty/netty/pull/3344

+1

Vorsicht, es unterstützt nur Unix-Sockets im STREAM-Modus. Überprüfen Sie, was Ihr Server öffnet, mit 'netstat -ux'. Siehe auch [Unterschied zwischen UNIX-Domänen-STREAM- und DATAGRAM-Sockets] (http://stackoverflow.com/questions/13953912). – Florian