添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
满身肌肉的小虾米  ·  如何让google ...·  8 月前    · 
乖乖的手术刀  ·  使用 Python ...·  1 年前    · 
迷茫的红豆  ·  file handling - ...·  1 年前    · 

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

21 人关注

我们的一个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

但这使得该程序只适用于IPv4网络。

Is it possible to do something like the sshd如上,都支持IPv4和IPv6?

java
linux
networking
network-programming
ipv6
Howard
Howard
发布于 2012-04-30
1 个回答
paulsm4
paulsm4
发布于 2012-04-30
已采纳
0 人赞同

我怀疑这与其说是一个Java编程问题,不如说是一个操作系统网络堆栈/操作系统网络配置问题。

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

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

Windows 7和Windows Server 2008可以很好地处理双堆栈;Windows XP则不然 :)

你似乎使用的是Linux--大多数现代的Linux台式机和服务器也能毫无问题地处理双IPv4和IPv6。

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

  • http://ntrg.cs.tcd.ie/undergrad/4ba2.02/ipv6/interop.html
  • 你知道如何为你的Java应用程序 "关闭 "IPV6吗?【替换代码0

    你也可以像这样强制你的服务器使用IPV6。【替换代码1

    这可以说是你最好的来源。

  • http://docs.oracle.com/javase/6/docs/technotes/guides/net/ipv6_guide/index.html
  • 你绝对应该能够完成你想要的东西(至少在Java编程层面),除非你受到外部网络问题的限制。

    Nodes)      V4 Only  V4/V6  V6 Only
                -------  -----  -------
    V4 Only     x        x   
    V4/V6       x        x      x
    V6 Only              x      x