Java 使用IPv4的套接字通信
我在同一台机器上的两个端口之间使用套接字通信 在客户端,我使用Java 使用IPv4的套接字通信,java,sockets,tcp,Java,Sockets,Tcp,我在同一台机器上的两个端口之间使用套接字通信 在客户端,我使用sockets=newsocket(“localhost”,6666) 但套接字是使用IPv6创建的,并且使用底层tcp6 tcp 0 24::ffff:127.0.0.1:57812::ffff:127.0.0.1:31210最后确认- 问题是我无法使用flagjava.net.preferIPv4Stack=true,因为我无法阻止所有IPv6通信 我的问题是,如果我使用sockets=newsocket(“127.0.0.1”,
sockets=newsocket(“localhost”,6666)代码>
但套接字是使用IPv6创建的,并且使用底层tcp6
tcp 0 24::ffff:127.0.0.1:57812::ffff:127.0.0.1:31210最后确认-
问题是我无法使用flagjava.net.preferIPv4Stack=true
,因为我无法阻止所有IPv6通信
我的问题是,如果我使用sockets=newsocket(“127.0.0.1”,6666)代码>,是否始终使用IPv4创建套接字?我在我的机器上进行了测试,测试结果表明将始终使用IPv4
有没有其他方法可以确保IPv4连接?或者使用127.0.0.1
可以正常工作?指定类似127.0.0.1
的IPv4地址可以确保套接字仅用于IPv4。
相反,指定像localhost
这样的主机名会导致系统相关行为:在某些系统上,localhost同时声明为127.0.0.1
(IPv4)和::1
(IPv6),而在其他系统上,localhost仅用于IPv4地址,而IPv6使用不同的名称,如ip6 localhost或类似名称。在本地主机同时用于IPv4和IPv6的情况下,通常会使用首选系列(主要是IPv6)创建套接字。指定类似127.0.0.1
的IPv4地址可确保套接字仅用于IPv4。
相反,指定像localhost
这样的主机名会导致系统相关行为:在某些系统上,localhost同时声明为127.0.0.1
(IPv4)和::1
(IPv6),而在其他系统上,localhost仅用于IPv4地址,而IPv6使用不同的名称,如ip6 localhost或类似名称。在本地主机同时用于IPv4和IPv6的情况下,通常会使用首选系列(主要是IPv6)创建套接字