标签: inetaddress

guava - InetAddress.coerceToInteger返回int而不是long

我有一个关于Guava的InetAddress.coerceToInteger方法的问题.

根据文档的方法:

public static int coerceToInteger(InetAddress ip)

'返回表示IPv4地址的整数,无论​​提供的参数是否为IPv4地址."

但是,IPv4范围是无符号的32位,而Java的int是有符号的 - 意味着返回的值只能覆盖相关IPv4范围的一半.

我错过了某人或方法中存在真正的问题吗?

谢谢

java inetaddress guava

4
推荐指数
1
解决办法
2030
查看次数

从请求中获取主机名

我在Intranet上运行Windows Server 2008上的应用程序.

要登录应用程序,请尝试从请求中获取主机名以验证用户.但是,有时应用程序返回IP地址而不是名称,一段时间之后,没有做任何事情,应用程序能够解析名称,一切正常......

这是我用来获取主机名的代码:

InetAddress inaHost = InetAddress.getByName(request.getRemoteAddr());
String hostname = inaHost.getHostName();
System.out.println("[[ Hostname = " + hostname + " ]]");
Run Code Online (Sandbox Code Playgroud)

这是因为Intranet配置(DNS!?),还是我的代码,巫术或其他东西有问题?

java networking inetaddress

4
推荐指数
1
解决办法
2万
查看次数

getLocalHost() 显示错误的 IP 地址

我正在尝试执行以下代码。我是 Java 新手,所以这是我第一次接触 java.net。程序中没有错误,但我得到的本地主机地址为 192.168.56.1,而我的 IP 为 192.168.2.10

import java.net.*;
class InetAddressDemo
{
    public static void main(String[] args)
    {
        try
        {
            InetAddress address = InetAddress.getLocalHost();
            System.out.println("\nLocalhost Address : " + address + "\n");
        }
        catch (Exception e)
        {
            System.out.println(e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java ip inetaddress

3
推荐指数
1
解决办法
4600
查看次数

Android - 比较两个相同的InetAddress会失败吗?

我有一个应用程序,我正在开发多人游戏.但是我没有2部手机,所以我一直在我的电脑上运行一个单独的程序(注意:不是模拟器!),它模拟我的程序和多人游戏方面.

但是在PC上我有以下代码:

Packet input = inputQueue.take();

                if (clientAddress == input.getAddress())
                {
                    switch (input.type)
                    {
Run Code Online (Sandbox Code Playgroud)

这很好用,Packet只是一个简单的类,我写的是从Datagram包中获取信息,getAddress()返回一个InetAddress.客户端地址先前已在代码中设置.

然而,Android应用程序具有完全相同的代码,字面上的行完全相同,这个InetAddress不会等同于另一个?如果我使用getHostName()或其他东西获取2 InetAddress的字符串并进行比较,那么它就等于另一个.

我做错了什么并且通过思考我可以将这两个对象与==符号进行比较来假设一些东西?它应该是.equals()吗?我以为android使用相同的java.net代码,但可能有区别吗?

使用InetAddress确保我拥有相同地址的最佳方法是什么?

java android equals inetaddress

2
推荐指数
1
解决办法
4207
查看次数

Java InetAddress失败

我试图检查是否可以使用"isReachable"方法访问某些主机.

line 113: oaiBaseURL = "http://www.cnn.com";//////////////////////////////////////
line 114: boolean res = InetAddress.getByName(oaiBaseURL).isReachable(10000);
line 115: System.out.println("------reachable:"+res);
Run Code Online (Sandbox Code Playgroud)

并获取以下错误消息(在eclipse中):

java.net.UnknownHostException: http://www.cnn.com
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source)
    at java.net.InetAddress.getAddressFromNameService(Unknown Source)
    at java.net.InetAddress.getAllByName0(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getByName(Unknown Source)
    at com.irWizard.web.validator.WizardValidator.validateForm(WizardValidator.java:114)
Run Code Online (Sandbox Code Playgroud)

有谁知道这个错误可能是什么原因?

提前致谢!

java inetaddress

2
推荐指数
1
解决办法
4802
查看次数

我可以在InetAddress对象上过滤和选择仅IPV4地址吗?如何排除IPV6?

我有以下问题:我创建一个ArrayList,我把这个arraylist放在我的客户端的所有IP地址(一个如果客户端有一个网卡,如果客户端运行在具有n个网卡的PC上则为n),不包括环回地址,点对点地址和虚拟地址.

我这样做是这样的:

private static List<String> allIps = new ArrayList<String>();

static {
    Enumeration<NetworkInterface> nets;
    try {

        nets = NetworkInterface.getNetworkInterfaces();


        while(nets.hasMoreElements()) {

            NetworkInterface current = nets.nextElement();

            if ((current.isUp()) && (!current.isPointToPoint()) && (!current.isVirtual()) && (!current.isLoopback())) {
                System.out.println(current.getName());
                Enumeration<InetAddress> ee = current.getInetAddresses();


                    while (ee.hasMoreElements()) {
                        InetAddress i = ee.nextElement();
                        System.out.println(i.getHostAddress());
                        allIps.add(i.getHostAddress());

                    }
            }
        }
    } catch (SocketException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    System.out.println("List of all IP on this client: "
            + allIps.toString());
    System.out.println("Number of ip: " + allIps.size());

}
Run Code Online (Sandbox Code Playgroud)

它似乎工作得很好,唯一的问题是我的输出(在Eclipse控制台中)是: …

java inetaddress

2
推荐指数
1
解决办法
4475
查看次数

如何在 Scala 中将 IPv6 地址与 BigInteger 相互转换

希望将 IPv6 字符串(例如 2001:0:4137:9e76:34b7:2e31:3f57:fd9a)转换为 BigInteger,并从 BigInteger 转换为 IPv6 字符串。

scala biginteger ipv6 inetaddress

2
推荐指数
1
解决办法
2742
查看次数

使用 java.net.InetAddress.getLocalHost 查找主机名时线程进入阻塞状态

请在下面找到出现问题的应用程序/环境详细信息。

  • Java Web 应用程序部署在 Tomcat 9.0.35 上,JRE 版本为 1.8.0_231-b11
  • 该应用程序在部署在 Open shift Kubernetes 分发平台上的 docker 容器中运行。

我看到应用程序中的许多线程有时会进入阻塞状态几分钟。在线程转储分析中,发现 java.net.InetAddress.getLocalHost 调用花费了太多时间。很多线程都卡在这里。为应用程序中打印的每个记录器获取主机名。

该问题是间歇性的。但是当它发生时,应用程序/tomcat将进入暂停状态,从而导致大量线程的积累。一段时间(几秒钟)后,所有阻塞的线程同时解除阻塞。由于请求并发,应用程序将耗尽它在池中维护的数据库连接,从而导致问题/缓慢/服务可用性。作为修复,我确保仅将主机名访问一次到静态变量中,并在整个日志记录过程中使用相同的主机名。我想知道这个问题的详细根本原因。

  • 为什么这个问题会间歇性地出现?
  • 这个kubernetes环境下DNS查找有问题吗?
  • 我们正在使用 IPV4 协议/地址
  • 有没有更好的方法/修复来处理这个问题?

以下来自线程转储的示例:

 "https-jsse-nio-8443-exec-13" #95 daemon prio=5 os_prio=0 tid=0x00007fccadbba800 nid=0xaf5 waiting for monitor entry 0x00007fcb912d1000
       java.lang.Thread.State: BLOCKED (on object monitor)
        at java.net.InetAddress.getLocalHost(InetAddress.java:1486)
        - waiting to lock <0x00000005e71878a0> (a java.lang.Object)
Run Code Online (Sandbox Code Playgroud)

java performance https inetaddress tomcat9

2
推荐指数
1
解决办法
2357
查看次数

获取安装在我的Websphere服务器中的EJB无状态bean内的主机和端口

我有一个EJB无状态Bean,由Websphere内的Scheduler自动执行.我的EJB安装在Websphere中.在我的EJB内部,我想向其他应用程序公开的Web服务发出http请求(在同一个服务器内部).我尝试使用相对路径,因为这是我通常在应用程序之间发出请求的方式,但在我的bean中我不知道如何获取主机名和端口来构建URL.

我设法通过这样做得到主机(IP):

InetAddress.getLocalHost().toString();
Run Code Online (Sandbox Code Playgroud)

但我也需要端口号.问题是:如何获取安装EJB应用程序的应用程序服务器(Websphere)的主机和端口号?这可能吗?

这段代码是我尝试发出请求的方式,但这不起作用,因为我需要完整的路径:

URL url = new URL("/MyOtherAppName/myservice");         
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

connection.setRequestProperty("Content-Length", 
    Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");  

connection.setUseCaches(false);
connection.setDoOutput(true);
Run Code Online (Sandbox Code Playgroud)

- 编辑1 ----

我认为用户Gas的方法很好,并且使我的应用程序更容易配置.

我按照本指南实现了URL Provider方法:

URL提供程序Websphere

java websphere ejb stateless inetaddress

1
推荐指数
1
解决办法
974
查看次数

找不到符号InetAddress.getByAddress()

我正在尝试连接到Web服务器并检查它是否可以从我的计算机访问.问题是,当我尝试使用InetAddress.getByName(地址)时,我收到编译错误:

Error:(20, 50) java: cannot find symbol
symbol:   class getByName
location: class java.net.InetAddress
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为当我开始输入这个方法名称时,IntelliJ IDEA向我显示了一个带有名称建议列表的提示,所以我猜错了PATH变量没有问题.当我完成输入方法名称时,它立即用红色绘制并说"无法按名称解析符号".同时,InetAddress.isReachible(100)没有这样的问题,即使考虑到它放在同一个类中.实际上,我只能使用公共静态方法来解决问题,例如InetAddress.getByAddress(),InetAddress.getLoopbackAddress()等.我认为我可能使用旧的java版本,所以我在windows命令行中输入了java -version,这里说的是:

java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

String url = "http://reddit.com";
    byte [] address = url.getBytes();
    InetAddress inetAddress = new InetAddress.getByName(address);
    try {
        inetAddress.isReachable(100);
    } catch (IOException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

java intellij-idea inetaddress

1
推荐指数
1
解决办法
1811
查看次数

InetAddress.getByName无法解析为类型

我试图使用InetAddress返回用户输入的网站名称的IP地址,但我在语句中收到错误:InetAddress ip = new InetAddress.getByName(site); 显示的错误是:

InetAddress.getByName cannot be resolved to a type
Run Code Online (Sandbox Code Playgroud)

我的代码:

import java.util.*;
import java.net.*;
import java.io.*;
import java.net.InetAddress;

public class getIP {
    public static void main(String args[])throws UnknownHostException 
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String site;
        System.out.println("Enter the url :");
        site = br.readLine();
        try
        {
            InetAddress ip = new InetAddress.getByName(site);
        }
        catch(UnknownHostException ee)
        {
            System.out.println("Website not found.");
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

java inetaddress

0
推荐指数
1
解决办法
1890
查看次数

Java网络-连接两台计算机

我正在尝试编写一个简单的程序客户端服务器程序,该程序将客户端计算机连接到服务器计算机。

到目前为止,我的代码在localhost上运行良好,但是当我将客户端代码中的IP地址替换为服务器计算机的本地IP地址时,则未完成连接。我认为我的理解InetAddress不对。

套接字连接代码:Client.java

InetAddress ip = InetAddress.getByName("my_ip_address");
Socket s = new Socket(ip, 9876); //<- where the connection timeout happens
Run Code Online (Sandbox Code Playgroud)

java sockets networking ip-address inetaddress

0
推荐指数
1
解决办法
52
查看次数

inetAddress.getByName(address)unknownhostexception

getByName是在具有https://stackoverflow.com/questions之类的路径的链接上工作还是在链接中仅包含主机(https://stackoverflow.com)?

当我使用包含“ /”的链接时,出现unknownHostException,有关如何解决该问题的任何提示?

控制台说错误在这里:

            socket = new Socket(InetAddress.getByName(adr), port);
Run Code Online (Sandbox Code Playgroud)

在此先感谢您,英语不好,因为它不是我的母语,对此我们深表歉意。

java inetaddress unknown-host

-2
推荐指数
1
解决办法
1730
查看次数