gpt4 book ai didi

Java socket timeout connection timeout by socket connect, but fine by UNIX ping 工具

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:55 25 4
gpt4 key购买 nike

我有 1 台机器,我使用以下脚本对其进行了 ping 操作

import java.io.PrintStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;

class SimplePing
{
static void connectAndPing(String host, int port, int loop, int pingLoop, int socketTimeout){
if(loop>0){
SocketAddress sAdress;
Socket kkSocket;
for(int i=0;i<loop;i++){
sAdress = new InetSocketAddress(host, port);
for(int j=0;j<pingLoop;j++){
try {
kkSocket = new Socket();
kkSocket.connect(sAdress, socketTimeout);
kkSocket.close();
Thread.sleep(1000L);
} catch (Exception e) {
System.out.println(e);
}
System.out.print("!");
}
}
}
}


public static void main(String[] args)
{

String host = args[0];
int port = Integer.parseInt(args[1]);
int socketTimeout = Integer.parseInt(args[2]);
int loop = 100000;
int pingLoop = 100;

System.out.println("Begin ping. . .");
connectAndPing(host, port, loop, pingLoop, socketTimeout);
System.out.println("End ping. . .");
}
}

它给了我这样的结果(不要打扰标记,这只是我的评论) enter image description here

然后我尝试使用 UNIX ping 工具进行 ping,并得到

enter image description here

这是远程机器信息:

**SunOS msgbkrpapp18 5.10 Generic_138888-03 sun4v sparc SUNW,SPARC-Enterprise-T5120

Java 版本“1.6.0_26”

Java(TM) SE 运行时环境(build 1.6.0_26-b03)

Java HotSpot(TM) 服务器虚拟机(构建 20.1-b02,混合模式)**

为什么我得到不同的结果?哪个更有效?

我的消息传递应用程序正在使用端口 8000,它接受来自外部 IP 的连接,我的客户提示应用程序有时会关闭,他使用上述 java 程序读取系统健康状况。

如果我在应用程序端检查,没有遇到异常情况,甚至连接的线程池甚至没有达到最大值。

有什么建议吗?谢谢

最佳答案

答案在你的代码中:

int socketTimeout = 1000;
...
kkSocket.connect(sAdress, socketTimeout);

对方1秒内没有响应,所以你得到一个SocketTimeoutException。尝试增加超时。也有代码来处理异常——比如增加未回答的 ping 的计数器。

关于Java socket timeout connection timeout by socket connect, but fine by UNIX ping 工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24630197/

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