18

我看到这些线程用于 Java 的 UNIX 套接字实现?http://forums.sun.com/thread.jspa?threadID=713266

第二个链接说 Java 已经支持 UNIX Domain Socket。如果这是真的,我需要从 Java 实现什么类?

从第一个链接开始,它说 Java 不支持 UNIX Domain Socket。如果您需要 UNIX 域套接字,则必须使用第 3 方库。

那么,它是什么?

4

4 回答 4

24

您可以使用 junixsocket:https ://github.com/kohlschutter/junixsocket

它利用 Java Socket API 通过 JNI 库提供 AF-UNIX 支持。它甚至允许通过 Unix 套接字从 Java (Connector/J) 连接到 MySQL。

于 2011-05-10T18:23:49.063 回答
17

如果不使用第 3 方(本机)库,Java 无法创建或访问 Unix 域套接字。上面第二个链接的最后一条评论提到了这一点。

第一个链接上有一些好的(和正确的)信息。

于 2010-11-04T21:03:16.897 回答
7

Netty 从 4.0.26 版本开始也支持它:https ://github.com/netty/netty/pull/3344

于 2015-04-17T13:48:54.687 回答
2

正如@Benny 在评论中指出的那样,JDK 16 通过java.net.UnixDomainSocketAdress和相关类内置了对 unix 域套接字的支持。您可以在JEP-380上阅读更多内容

这是JEP的一个片段:

var unixAddr = UnixDomainSocketAddress.of("/foo/bar.socket");
var channel2 = SocketChannel.open(unixAddr);

于 2021-09-21T20:03:27.023 回答