gpt4 book ai didi

java - 使用 IPv4 的套接字通信

转载 作者:行者123 更新时间:2023-12-02 03:11:14 24 4
gpt4 key购买 nike

我正在同一台机器上的两个端口之间使用套接字通信。

在客户端,我使用 Socket s = new Socket("localhost", 6666);

但是套接字是使用 IPv6 创建的,并且使用底层 tcp6。

tcp 0 24 ::ffff:127.0.0.1:57812 ::ffff:127.0.0.1:31210 LAST_ACK -

问题是我无法使用标志 java.net.preferIPv4Stack=true因为我无法阻止所有 IPv6 通信。

我的问题是,如果我使用Socket s = new Socket("127.0.0.1", 6666); ,套接字总是使用 IPv4 创建吗?我在我的机器上对此进行了测试,测试结果表明始终会使用 IPv4。

还有其他方法可以确保 IPv4 连接吗?或者使用127.0.0.1会工作正常吗?

最佳答案

指定 IPv4 地址(如 127.0.0.1)可确保套接字仅用于 IPv4。
相反,指定诸如 localhost 之类的主机名会导致系统相关行为:在某些系统上,localhost 被声明为 127.0.0.1 (IPv4) 和 ::1 (IPv6) 而在其他版本上 localhost 仅用于 IPv4 地址,而不同的名称(例如 ip6-localhost 或类似名称)用于 IPv6。在 localhost 同时用于 IPv4 和 IPv6 的情况下,通常会使用首选系列(主要是 IPv6)创建套接字。

关于java - 使用 IPv4 的套接字通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41015565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com