我看到这些线程用于 Java 的 UNIX 套接字实现?和http://forums.sun.com/thread.jspa?threadID=713266。
第二个链接说 Java 已经支持 UNIX Domain Socket。如果这是真的,我需要从 Java 实现什么类?
从第一个链接开始,它说 Java 不支持 UNIX Domain Socket。如果您需要 UNIX 域套接字,则必须使用第 3 方库。
那么,它是什么?
我看到这些线程用于 Java 的 UNIX 套接字实现?和http://forums.sun.com/thread.jspa?threadID=713266。
第二个链接说 Java 已经支持 UNIX Domain Socket。如果这是真的,我需要从 Java 实现什么类?
从第一个链接开始,它说 Java 不支持 UNIX Domain Socket。如果您需要 UNIX 域套接字,则必须使用第 3 方库。
那么,它是什么?
您可以使用 junixsocket:https ://github.com/kohlschutter/junixsocket
它利用 Java Socket API 通过 JNI 库提供 AF-UNIX 支持。它甚至允许通过 Unix 套接字从 Java (Connector/J) 连接到 MySQL。
如果不使用第 3 方(本机)库,Java 无法创建或访问 Unix 域套接字。上面第二个链接的最后一条评论提到了这一点。
第一个链接上有一些好的(和正确的)信息。
Netty 从 4.0.26 版本开始也支持它:https ://github.com/netty/netty/pull/3344
正如@Benny 在评论中指出的那样,JDK 16 通过java.net.UnixDomainSocketAdress和相关类内置了对 unix 域套接字的支持。您可以在JEP-380上阅读更多内容
这是JEP的一个片段:
var unixAddr = UnixDomainSocketAddress.of("/foo/bar.socket");
var channel2 = SocketChannel.open(unixAddr);