問題があります。
ユーザーが入力した IP で Game-Server に接続したい。サーバーが正しいサーバーであるか、サーバーが存在しない限り、すべて問題ありません。接続または例外があります。
問題は、ゲームを実行していない既存のサーバーに 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.";
}
それが問題であれば、私はJmonkeyでJAVAを使用しています。