在支持IPv6的VPS上使用java的ServerSocket类监听某个端口时,通过“netstat -an”命令查看所监听的端口时发现格式是“:::nnn”,这是IPv6的格式,而IPv4的格式是“0.0.0.0:nnnn”,此时如果通过这个VPS的IPv4跟这个端口连接时可能会失败(搞不懂Amazon EC2为什么可以连接),可以在本地用“telnet 12.34.56.78 nnn”来试连接这个端口。
找了好多方法,包含想关掉IPv6功能,但不管是通过VPS的客服还是自己摸索最终都关不掉IPv6功能,没办法只有通过java的强制使用IPv4着手,还真有人碰到此类问题并告知了方法,参考链接在这里。
其实就是在运行java时通参数来强制使用IPv4:
[text]java -Djava.net.preferIPv4Stack=true -jar MyJar.jar[/text]
经过这么一改,之前自动走IPv6的监听这回就回归IPv4,这样就可以部署Yuchberry之类的玩意了。
PS. 在Linux下配置java sdk的方法:
1. 在/etc/profile结尾加上下面几行
[bash]export JAVA_HOME=/usr/share/jdk1.6.0_29
export J2RE_HOME=$JAVA_HOME/jre
export PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar[/bash]
2. 执行“source /etc/profile”命令启动配置
Tags: VPS
请教一下,为什么加了博主的参数但还是监听IPv6?
注意下面的tcp6
[root@izttha2lhyn6ldz ~]# netstat -an | grep 25565
tcp6 0 0 0.0.0.0:25565 :::* LISTEN
[root@izttha2lhyn6ldz ~]#
服务端参数:
java -Xmx1024M -Xms1024M -Djava.net.preferIPv4Stack=true -jar spigot.jar