我正在尝试在基于Intel的Linux机器上执行以下Java代码(Custom Minimal Linux version:Linux 2.6.18)。套接字创建耗时太长(约3分钟)。当我在Linux中运行Top命令时,它向我显示我的Java进程处于Sleep状态。有人可以告诉我这是怎么回事?
Java版本:1.6.0_24
try{
System.out.println("Creating a Socket at: " + new Date());
s = new Socket(hostname, p);
System.out.println("Socket creation complete at: " + new Date());
s.close();
}
UPDATE:使用Java 1.7(1.7.0_01)测试,它运行正常。整个程序运行在5以下 秒。套接字创建几乎立即返回。
答案 0 :(得分:3)
我想这可能是DNS问题。您使用的是主机名还是IP?如果您使用的是名称,请尝试ping它。 ping需要多长时间?我想这需要很多时间。无论如何,尝试在您的Java程序中使用IP地址。我希望它能解决你的问题。
如果没有检查你的网络设置,防火墙,NAT等。可能从本地连接开始,即尝试在localhost上运行程序,然后在本地网络中的其他主机上运行,然后在其他网络中的主机上运行(如果需要) 。
祝你好运。答案 1 :(得分:0)
我花了整整一个上午来绕过它。
在我的ubuntu中,我尝试将ipv6设置(系统设置 - >网络)从“自动”变为“忽略”,然后一切正常。
似乎这是JDK1.6的一个错误,我很快就会尝试JDK1.7。