gpt4 book ai didi

用于检查客户端是否可用的 Java 套接字轮询

转载 作者:行者123 更新时间:2023-11-30 09:18:11 28 4
gpt4 key购买 nike

我正在尝试轮询服务器端的套接字以检查客户端是否仍然可用。我在这里检查了几个线程,但似乎没有任何效果。

因为我发现没有直接的方法来检查,所以我尝试对套接字执行写操作并且... .

我设置了一个线程,它应该每秒执行轮询发送数据包。大约一分钟后发送给断开连接的客户端时,我收到“操作超时”的响应。

我也尝试过使用 socket setSoTimeout,但它也没有按预期工作。

有人对如何让它发挥作用有任何建议吗?

非常感谢您。

最好的问候,汤姆

最佳答案

好吧,我终于找到了真正有效的解决方案:

InetAddress addr = InetAddress.getByName("192.168.1.121");
addr.isReachable(1000)

像魅力一样工作并且 react 非常快。事实上,我将它与 socket 一起使用,所以在我的例子中它是这样工作的:

new Thread() {
public void run() {
while(true) {

try{
ArrayList<Socket> arr = new ArrayList(clients.values());
for(int i=0; i<Main.clients.size(); i++){
try
{
InetAddress addr = InetAddress.getByName(arr.get(i).getInetAddress().toString().replace("/", ""));

System.out.println(addr.isReachable(1000));


}
catch (IOException e)
{
System.out.println("connection probably lost");
e.printStackTrace();
}
}
Thread.sleep(1000);
} catch (Exception e) { System.out.println("Shit happens: "+e); }
}}
}.start();

这不是真正优化的代码,看起来很糟糕,但您可以理解它背后的想法。整个代码用于可达主机检测线程。

关于用于检查客户端是否可用的 Java 套接字轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598612/

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