我看到这些帖子 Java的UNIX套接字实现? 和http://forums.sun.com/thread.jspa?threadID=713266。
第二个链接说Java已经支持UNIX域套接字。如果是真的,那么我需要从Java中实现哪个类呢?
从第一个链接中可以看出,Java不支持UNIX域套接字。如果你需要UNIX域套接字,你必须使用第三方库。
那么,到底是哪个呢?
我看到这些帖子 Java的UNIX套接字实现? 和http://forums.sun.com/thread.jspa?threadID=713266。
第二个链接说Java已经支持UNIX域套接字。如果是真的,那么我需要从Java中实现哪个类呢?
从第一个链接中可以看出,Java不支持UNIX域套接字。如果你需要UNIX域套接字,你必须使用第三方库。
那么,到底是哪个呢?
netstat -ux
命令检查您的服务器打开了哪些内容。另请参阅“UNIX域STREAM和DATAGRAM套接字之间的区别”。 - Floriannetstat
经常不可用,而iproute2
包及其ss
工具已取代它。在这种情况下,使用ss -lx
查看监听UNIX域套接字的进程。 - Per LundbergJava不能创建或访问Unix域套接字,除非使用第三方(本地)库。上面第二个链接的最后一条评论提到了这一点。
第一个链接提供了一些很好(且正确)的信息。
自4.0.26版本以来,Netty也支持此功能:https://github.com/netty/netty/pull/3344
epoll(2)
,这意味着它不能在Linux之外使用。 - Low power正如评论中 @Benny 所指出的那样,JDK 16 提供了内置支持 Unix 域套接字的功能,可通过 java.net.UnixDomainSocketAdress 和相关类实现。您可以在 JEP-380 中了解更多信息。
以下是 JEP 中的一段代码:
var unixAddr = UnixDomainSocketAddress.of("/foo/bar.socket");
var channel2 = SocketChannel.open(unixAddr);