我们的一个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?
我怀疑这与其说是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,没有任何问题。
这里有一篇关于互操作性的好文章:
您还可以像这样强制服务器使用IPV6:echo0>/proc/sys/net/IPV6/bindv6only
这可以说是您最好的消息来源:
Nodes) V4 Only V4/V6 V6 Only
------- ----- -------
V4 Only x x
V4/V6 x x x
V6 Only x x
附注:
这里还有一个很好的链接,它解释了在套接字级别发生的事情。它不是Java(它是C),但示例原则完全适用:
我们的一个Java程序启动时,它只监听IPv6(8080) 例如。 问题是它不能从外部访问(除了localhost之外),为了解决这个问题,我手动添加了这个 是否可以像上面的sshd一样,同时支持IPv4和IPv6?
在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