为什么我的服务总是绑定到 ipv6 localhost 而不是 ipv4?

2024-03-14

我有一个创建 ServerSocket 并绑定到的服务localhost:7060。当我在 Android 设备上执行“netstat -an”时,我看到它使用 ipV6 localhost 而不是 ipv4 localhost 接口。

输出是这样的:
tcp6 0 0 ::ffff:127.0.0.1:7060 :::* 听

使用 ipV4 的端口如下所示:
tcp 0 0 127.0.0.1:5060 0.0.0.0:* 监听

强制它始终使用 IPv4 的技巧是什么? 我正在使用 iptables 设置端口转发规则。我的版本支持 ipv4 目标地址。

这就是我创建用于侦听端口的 Java 代码的方式。

InetAddress localAddress = Inet4Address.getByName("localhost"); //InetAddress localAddress = Inet4Address.getLocalHost(); sockServer = new ServerSocket(nPort, 20, localAddress);

我遵循了其他建议,例如在服务启动时将系统属性设置为首选 ipV4。那没有什么区别。

System.setProperty("java.net.preferIPv4Stack", "true");

我在为嵌入式设备构建的 Android 2.3 上运行它。

更新: 我检查了 android 树中的 InetAddress.java 源。它正在用如下所示的行读取上面的标志。

static boolean preferIPv6Addresses() {
        String propertyName = "java.net.preferIPv6Addresses";
        String propertyValue = AccessController.doPrivileged(new PriviAction<String>(propertyName));
        return Boolean.parseBoolean(propertyValue);
    }

现在我不确定 System.setProperty() 调用是否真的改变了上面代码读取的值。


理论上,IPv6 服务器也侦听 IPv4,因为 IPv4 地址空间是 IPv6 的子集,这会给您带来真正的问题吗?

一个可能有效的技巧是使用“127.0.0.1”而不是“localhost”,它具有关联的 IPv4 和 IPv6 地址。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的服务总是绑定到 ipv6 localhost 而不是 ipv4? 的相关文章

随机推荐

  • 如何快速隐藏/显示按钮

    我正在尝试使用 if 语句来使按钮在标签显示某种状态时隐藏 并在标签显示其他内容时出现 标签的名称是 Status 当它显示时 Closed 我希望它隐藏 当它显示时 Open 就会出现 var query3 PFQuery classNa
  • 在自定义 JSF 组件收到 AJAX 更新后调用自定义 JavaScript 代码

    我已经实现了自己的 JSF 组件及其渲染器 并且运行良好 目前 在更改组件树中的某些内容后 我开始重新加载 JavaScript 页面 现在我想在 AJAX 调用传递新数据后更新我的组件 这就像我在单击按钮后向表中插入新行 这会启动 AJA
  • PHP 通过类传递对象?

    重建整个类布局后 我在使用多个类实例时仍然遇到问题 class User public variable public function getUser this gt variable It works return bob class
  • Twilio 通话应用账单扣除

    我们正在制作三种方式调用 Android 应用程序 两个参与者是应用程序用户 第三个参与者是使用 TWILIO 的任何电话号码 我们已经实现了通话功能 我们的通话正在接通 但问题是 我们需要在服务器端知道谁是发起呼叫的用户 以便我们可以从该
  • 如何在本地服务器上安装CloudFoundry

    我知道 CF 是为在多个云服务上运行而设计的 以实现微服务应用程序的统一视图 但是 我想在我的 CentOS 本地服务器上安装并运行 Cloud Foundry 换句话说 我想在一台运行 CF 的服务器上设置我的私有 云 作为基于微服务的应
  • 如何在 tkinter 中滚动到 TreeView 的底部

    我在 Tkinter 中使用树视图模仿了一个表格小部件 并添加一个链接到它的滚动条 问题是因为我的数据是按分钟自动添加到底部的 并且我希望滚动始终滚动到底部 我知道 text see END 在文本小部件中完美工作 但就我而言 树视图小部件
  • Java NoSuchAlgorithmException - SunJSSE、sun.security.ssl.SSLContextImpl$DefaultSSLContext

    背景 我一直在它自己的 Eclipse 项目中使用 Authorize net SDK 一切都运转良好 然后我需要将其添加到我的主项目中 我将依赖项添加到类路径中 并将其复制到我需要的代码块中 它应该有效 Problem 长话短说 代码在我
  • 表单验证失败后重新填充 Codeigniter 中的复选框

    在表单验证不成功将用户返回到同一表单后 我在重新填充一组复选框时遇到问题 下拉菜单和文本输入可以重新填充 但复选框不能 这是复选框的代码片段 td Casual br Romantic br td
  • 如何获取 Xamarin.Forms 中嵌入文件的 URL/路径

    我无法访问 Xamarin Forms 项目中嵌入的 mp4 文件 根据Xamarin Forms 中的文件处理 https learn microsoft com en us xamarin xamarin forms app funda
  • SassError:找不到要导入的样式表。 @use '~@angular/material' 作为垫子;

    我使用 CLI 创建了一个 Angular 项目 我正在使用 SCSS 并且我将 Angular Material 包含在自定义主题 iirc 中 我添加了几个虚拟组件 应用程序仍然构建得很好 然后我需要使用 Angular Materia
  • Swift 3 类型“Any”没有下标成员

    我刚刚将我的项目转换为 Swift 3 我这里有这行代码 let type self data indexPath row Type as String 但现在我得到这个错误 Type Any has no subscript member
  • 不允许使用非成员函数重载 C++ 转换运算符的理由是什么

    C 0x 添加了显式转换运算符 但它们必须始终定义为 Source 类的成员 这同样适用于赋值运算符 它必须在 Target 类上定义 当所需转换的 Source 和 Target 类彼此独立时 Source 都不能定义转换运算符 Targ
  • 如何通过IP地址列出网络计算机上所有已安装的软件?

    我想知道如何获取网络计算机上安装的软件列表 我能够获取本地计算机上安装的软件列表 但不确定如何提取网络内计算机上已安装软件的详细信息 我使用服务器名称或网络计算机的 IP 地址作为唯一的输入 下面是从本地计算机获取已安装软件的详细信息的代码
  • 在 Swift 中比较 UIColors 时出现问题

    我需要比较两个 UIColor 但由于某种原因它总是返回 false 我尝试比较使用 and isEqual 但它们似乎都不起作用 This is a sample of the colors I have created let blue
  • Google 地图 + jQuery:渲染错误

    将 google 地图放入 jquery ui 选项卡中时 地图在某些情况下无法正确显示 重现 Go here http www fiveminuteargument com html map test html 单击 列表 链接 调整浏览
  • 使用 save() 玩框架 JPA 问题

    我试图在数据库中保存一个简单的对象 但这给我带来了问题 这是我的对象类 Entity Table name lines public class Line extends GenericModel Id Column name line i
  • 不允许子操作执行重定向操作。 (使用部分视图)

    我正在尝试使用数据库中的一些数据加载部分视图 但在运行应用程序时遇到以下问题 不允许子操作执行重定向操作 我不知道为什么会发生这种情况 因为我对 MVC 技术还很陌生 这是我的PartialViewResult控制器中的方法 public
  • 使用字符串插值内的变量指定小数位

    我有一个字符串格式 其中包含两个整数变量 每个变量都需要格式化为可变长度 int x 1234 int y 42 Simplified real values come from method outputs so must use the
  • 在 Qt Quick 中从 ListView 制作自定义 TableView 的规范方法

    制作桌子的最佳方法是什么ListView 假设给定一个二维字符串数组并且delegate因为所有列都是Labels 仅使用 QML 时如何以及何时计算每列的最大项目宽度 各内容Label不是恒定的 即implicitWidth在生命周期中是
  • 为什么我的服务总是绑定到 ipv6 localhost 而不是 ipv4?

    我有一个创建 ServerSocket 并绑定到的服务localhost 7060 当我在 Android 设备上执行 netstat an 时 我看到它使用 ipV6 localhost 而不是 ipv4 localhost 接口 输出是