我有问题。
我想使用用户输入的 IP 连接到游戏服务器。只要服务器是正确的或者服务器不存在,一切都很好,我有一个连接或一个异常。
问题是,如果我将 IP 放入不运行我的游戏的现有服务器。在这种情况下,程序停留在连接事件中并且不对任何事情做出反应。我考虑过设置一个计时器线程,尽管那没有用。该程序不对用户的任何输入做出反应,只允许您关闭它。
我将客户端实现为线程,将定时器实现为线程。如果超时,Timer-Thread 应该停止 Client-Thread。
我的计时器:
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 一起使用。