gpt4 book ai didi

java超时线程连接到错误的服务器

转载 作者:行者123 更新时间:2023-12-01 11:58:25 26 4
gpt4 key购买 nike

我遇到了问题。

我想使用用户输入的 IP 连接到游戏服务器。只要服务器是正确的或者服务器不存在,一切都很好,我有连接或异常。

问题是,如果我将 IP 输入到不运行我的游戏的现有服务器。在这种情况下,程序停留在连接事件中并且不会对任何事情使用react。我考虑过设置一个计时器线程,尽管这不起作用。该程序不会对用户的任何输入使用react,只允许您将其关闭。

我将客户端实现为线程,将计时器实现为线程。如果超时,计时器线程应该停止客户端线程。

我的计时器:

public class Timer extends Thread{
private int counter;
private Coplayer client;

Timer(int i, Coplayer c){
if (i>=0) {
counter = i;
} else {
counter = -i;
}
client = c;
}

@Override
public void run (){
if (counter>0) {
counter -= 1;
} else {
client.stop();
}
}

和我的客户:

 try {
Timer t1 = new Timer(100, this);
client=Network.connectToServer(ip,port);//this is the line the programm halts
t1.stop();
client.start();

connected = true;
Serializer.registerClass(Message_String.class);
Serializer.registerClass(Message_Player.class);
CL = new ClientListener();
client.addMessageListener(CL, Message_String.class);
client.addMessageListener(CL, Message_Player.class);
return "Verbunden.";

} catch (java.net.ConnectException e){
connected = false;
return "Verbindung konnte nicht hergestellt werden.";
} catch (java.net.UnknownHostException e){
connected = false;
return "Server nicht bekannt.";
} catch (IOException ex) {
connected = false;
return "Falsche Eingabe.";
}

我正在使用 JAVA 和 Jmonkey,如果这很重要的话。

最佳答案

超时问题已经讨论过:http://hub.jmonkeyengine.org/t/set-timeout-for-network-connecttoserver/30836

我仍然认为 jmonkeyengine 开发人员应该创建一个具有超时参数的 Network.connectToServer 版本。这应该不难,因为 java.net.Socket 有超时支持。 (也许你可以问他们)

无论如何,作为一种解决方法,您始终可以在单独的线程上启动连接尝试,如下所述:How to timeout a thread

关于java超时线程连接到错误的服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28177446/

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