gpt4 book ai didi

java - 234324.32423.234234.324234 是有效的 InetAddress 吗?

转载 作者:行者123 更新时间:2023-12-01 18:16:42 24 4
gpt4 key购买 nike

有什么办法可以InetAddress.getByName( 234324.32423.234234.324234 )将返回一个非空地址值? 看起来确实如此。

由于这种情况发生在单元测试中,我所要做的就是强制 InetAddress 抛出异常。是否有任何原因导致以下使用 PowerMock 的模拟无法工作?我的类签名之前确实有注释 @RunWith(PowerMockRunner.class) 和 @PrepareForTest({InetAddress.class})

String testIp = "127.0.0.1";
PowerMockito.mockStatic( InetAddress.class );
PowerMockito.when( InetAddress.getByName( testIp ) ).thenThrow( UnknownHostException.class );
MyClass someClassThatCallsInetAddressGetByName = new MyClass( 32 );
someClassThatCallsInetAddressGetByName.setHostAddress( testIp );
someClassThatCallsInetAddressGetByName.getHostAddress();

最佳答案

Is 234324.32423.234234.324234 a valid InetAddress?

没有。

它不是有效的 IPv4 地址,因为 4 部分 IPv4 地址中的数字是 0 到 255 范围内的十进制数字。

它不会解析为 IPv6 地址,因为 IPv6 地址的组成部分是用冒号而不是点分隔的。 (另一种 IPv6 格式具有冒号和点……但至少始终存在一个冒号。)

引用文献:

<小时/>

In my local environment, it returns null. But when migrated to cloud, it seems to return a valid address.

它应该始终返回null。根据 javadocs,这不是一个有效的 IP 地址字符串。 (“迁移到云端”是什么意思?您是否要将代码翻译成其他语言?)

Is this possible? Is InetAddress platform dependent?

不应该,而且不1

根据记录,OpenJDK 中的 IPv4 地址解析确实检查组件编号的范围。

<小时/>

1 - 至少对于任何符合规范的最新版本的 Java 来说不是这样。不兼容的实现可能会这样,但它就不是 Java(tm)。

关于java - 234324.32423.234234.324234 是有效的 InetAddress 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29096535/

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