当前位置: 首页 > 知识库问答 >
问题:

如何在Java上同时支持IPv4和IPv6

冯淳
2023-03-14

我们的一个Java程序启动时,它只监听IPv6(8080)

例如。

# netstat -ntpl

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::8080                 :::*                    LISTEN      -               
tcp6       0      0 :::22                   :::*                    LISTEN      -               

问题是它不能从外部访问(除了localhost之外),为了解决这个问题,我手动添加了这个

-Djava.net.preferIPv4Stack=true

是否可以像上面的sshd一样,同时支持IPv4和IPv6?

共有1个答案

荣波
2023-03-14

我怀疑这与其说是Java编程问题,不如说是OS网络堆栈/OS网络配置问题:

http://coding.derkeiler.com/archive/java/comp.lang.java.help/2009-09/msg00087.html

在某些操作系统上,单个本机TCP套接字可以同时侦听IPv4和IPv6上的端口。它能够接受来自远程IPv4和远程IPv6客户端的连接。在其他操作系统(如WinXP)上,操作系统本机套接字不能这样做,但只能从IPv4或IPv6接受,而不能同时接受。在这些操作系统上,必须有两个侦听套接字才能同时接受来自远程IPv4和IPv6客户端的连接,一个用于侦听IPv4连接,另一个用于IPv6。

您似乎是在Linux上--大多数现代Linux台式机和服务器也可以处理双ipv4和ipv6,没有任何问题。

这里有一篇关于互操作性的好文章:

  • http://ntrg.cs.tcd.ie/undergrad/4ba2.02/ipv6/interop.html

您还可以像这样强制服务器使用IPV6:echo0>/proc/sys/net/IPV6/bindv6only

这可以说是您最好的消息来源:

  • http://docs.oracle.com/javase/6/docs/technotes/guides/net/ipv6_guide/index.html
Nodes)      V4 Only  V4/V6  V6 Only
            -------  -----  -------
V4 Only     x        x   
V4/V6       x        x      x
V6 Only              x      x

附注:

这里还有一个很好的链接,它解释了在套接字级别发生的事情。它不是Java(它是C),但示例原则完全适用:

  • 同时接受来自IPv6和IPv4客户端的连接
 类似资料:
  • 问题内容: 我们的Java程序之一在启动时仅监听IPv6(8080) 例如 问题是无法从外部访问(本地主机除外),要解决此问题,我需要手动添加 但这使得该程序仅适用于IPv4网络。 是否可以执行上述类似 sshd的 操作,并且都支持IPv4和IPv6? 问题答案: 我怀疑这不是Java编程问题,而是OS网络堆栈/ OS网络配置问题: http://coding.derkeiler.com/Arch

  • 在Java web应用程序的根目录中有以下两个servlet和一个index.html页面。html页面收集一些数据,使用Insert servlet插入数据,然后向用户提供一个URL来检索数据(即http://localhost:8080/12345)。我希望用户能够将http://localhost:8080/12345放在浏览器中,并调用Retrieve servlet。 现在发生的事情是,

  • 我在多台PC上有多个版本的,其中一些具有最新版本,即,有些具有较旧的版本。 我已经按照这个设置与,下一代支持Firefox 47版自动化如下:- 它在Firefox版本47上运行良好,但当我在安装Firefox旧版本的其他PC上运行相同时,它会给出如下:- 原因:org.openqa.selenium.remote。无法访问BrowserException:无法sta rt新会话。可能的原因是远程

  • 注意:“”表示我要在两个地址上侦听客户端。 server.py client.py

  • 我对第二行的解释是“某人”(操作系统?Flask所依赖的底层网络库?)正在将IPv4请求转换为IPv6请求。但是,我理解,在传统的双堆栈设置中“本机”支持IPv4并不相同,即我希望有某种链接(这是我运行应用程序()时得到的结果)

  • 本文向大家介绍Java实现上传和下载功能(支持多个文件同时上传),包括了Java实现上传和下载功能(支持多个文件同时上传)的使用技巧和注意事项,需要的朋友参考一下 文件上传一直是Web项目中必不可少的一项功能。 项目结构如下:(这是我之前创建的SSM整合的框架项目,在这上面添加文件上传与下载) 主要的是FileUploadController,doupload.jsp,up.jsp,springm