我正在尝试使用Java编写一个简单的程序,给定版本4或6格式的IP,将返回其FQDN。以下代码在给定ipv4地址时工作正常,但仅在输入ipv6地址时才返回给定地址。InetAddressinet;try{inet=InetAddress.getByName(theIpAddress);}catch(UnknownHostExceptione){System.out.println("UnknownHost");return;}System.out.println(inet.getHostAddress(););System.out.println(inet.getHostName();
我正在寻找一个可以正确识别给定IP地址是私有(private)地址还是本地地址的JavaAPI。此代码似乎适用于大多数ipv4/ipv6地址:booleanisLocalIp=InetAddress.getByName(ipAddr).isSiteLocalAddress()||InetAddress.getByName(ipAddr).isLinkLocalAddress()||InetAddress.getByName(ipAddr).isLoopbackAddress();特别是,它将“fec0::”标识为本地/私有(private)类型地址,但不将“fc00::”或“fd00:
我有一个Java应用程序需要通过套接字连接到两台不同机器上的两个不同服务器。一台服务器已配置为监听IPv4连接,而另一台已配置为监听IPv6连接。现在,假设“host1”是监听IPv4连接的服务器的机器名,而“host2”是监听IPv6连接的服务器的机器名。我需要获取“host1”的Inet4Address和“host2”的Inet6Address以创建到每个服务器的套接字连接,如下所示:Inet4Addressinet4=(Inet4Address)InetAddress.getByName("host1");InetSocketAddresssoc4=newInetSocketAd
我在Windows上遇到了Java6的一个已知错误。我的理解是,获取网络掩码的正常方法是查找网络前缀长度并进行一些位移。问题是在Windows上,前缀长度经常返回错误,所以我们在应该得到24或20的时候得到了128。在thissolution,建议在Java命令行中加入-Djava.net.preferIPv4Stack=true。不幸的是,在Windows7上,将其添加为VM参数或在Java命令行上似乎没有任何效果。(a)有谁知道在Windows7上仍然可以解决此问题的其他解决方法吗?(b)或者,是否有完全不同的方法来获取可靠的网络掩码?谢谢!附言Hereisthebugreport
是InetAddress.getHostAddress()JDK1.6是否兼容ipv6?具体我在做什么InetAddress.getLocalHost().getHostAddress()是否符合ipv6标准?它对ipv4和v6地址都有效吗? 最佳答案 扩展类java.net.Inet6Address符合IPv6。Java文档:ThisclassrepresentsanInternetProtocolversion6(IPv6)address.DefinedbyRFC2373:IPVersion6AddressingArchitec
在Python中,使用IPy模块您可以执行以下操作:>>>ip.iptype()'PRIVATE'是否有一个库或简单的方法可以在Java中做同样的事情? 最佳答案 似乎不完全是,但是InetAddress有一些isXX()方法,例如:isAnyLocalAddress()和isSiteLocalAddress() 关于java-检查IPv4地址是否在私有(private)范围内,我们在StackOverflow上找到一个类似的问题: https://stack
有没有人有一个好的(最好是经过测试的)正则表达式来只接受有效的DNS主机名、IPv4或IPv6地址? 最佳答案 我知道您可能被迫使用正则表达式。但是,如果可能,最好避免为此任务使用正则表达式,而是使用Java库类来进行验证。如果您想同时进行验证和DNS查找,那么InetAddress.getByName(String)是个不错的选择。这将一次性处理DNS、IPv4和IPv6,并返回一个包装整齐的InetAddress实例,其中包含DNS名称(如果提供)和IPv4或IPv6地址。如果您只想进行句法验证,那么Apachecommons有
现在IPv6的使用正在慢慢开始,所以我目前正在修复和更新所有应用程序以为IPv6做好准备。其中一个应用程序是Java编辑器JOSM(http://josm.openstreetmap.de/)。即使操作系统使用IPv6,Java也不会在默认配置中真正使用IPv6。根据http://docs.oracle.com/javase/1.5.0/docs/guide/net/ipv6_guide/#using我将java.net.preferIPv6Addresses设置为true以让它使用IPv6。结果是有关互联网连接断开的用户错误报告。Java似乎只切换到使用IPv6地址而不是IPv4,除
服务器规模启用ipv6地址后,遇到一起案例,配置的服务ipv6地址显示“scopeglobaldadfailedtentativenoprefixroute”,无法连通,现将解决过程记录如下。一、问题情况1、ipv6信息检查 某台服务器配置ipv6地址后,发现其IPV6地址异常,检查IP运行情况#ipaddr1:lo:mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1000 link/loopback00:00:00:00:00:00brd00:00:00:00:00:00 inet127.0.0.1/8scopehostlo vali
如何将包含ipv6机器数据包目标的字符串转换为16字节数组?我知道getBytes和编码,但我似乎无法理解我应该使用哪种编码,或者我是否必须将该字符串转换为十六进制。Stringipv6="2001:0DB8:AC10:FE01:0000:0000:0000:0000";byte[]bytes=ipv6.getBytes();//mustbea16bytearray我想做的一个例子,只是为了举例说明。Obs.:我必须将字符串转换为16字节数组谢谢 最佳答案 试试这个InetAddressa=InetAddress.getByName