Hi,
folgende Ausgangssituation (siehe auch hier http://www.java-forum.org/java-basi...riable-thread-main-methode.html#post1041385):
Auf einem Rechner läuft ein Java Programm als Server. Eine Android App dient als Client. Stand der Dinge ist: Ich kann über die App eine Zahl an den Server schicken, dieser verarbeitet die Zahl und kann sie speichern.
Jetzt bin ich noch mit meiner Umsetzung etwas unzufrieden... mein Server läuft so:
und zwar läuft dieser als Thread, damit die normalen Berechnungen parallel laufen können.
Jetzt ist es aber so, dass bei dem o.g. Code der Server die ganze Zeit auf
wartet, bis meine App eine Zahl "rüberschickt". Das ist im Prinzip auch völlig ok so, aber ich möchte z.B. um 19 Uhr mein Programm automatisch beenden lassen. (Dazu gleich die nächste Frage wie stelle ich das am geschicktesten an? Ich kann ja schlecht eine Schleife schreiben, die die ganze Zeit die aktuelle Uhrzeit vergleicht, ob schon 19 Uhr ist!? Performance-technisch ja murks).
Also um 19 Uhr soll das Programm sich automatisch beenden, jetzt hängt der Thread aber noch bei
, das heißt erst wenn ich nach 19 Uhr noch einmal eine Zahl rüberschicke, wird der Thread auch erst beendet. (ich kann ja einfach wenn 19 Uhr laeuft = false setzen).
Aber das will ich so natürlich nicht. Wenn es 19 Uhr ist, soll der Server auch direkt herunter gefahren werden. Ich hoffe man versteht was ich meine?
Wenn meine App dann eine Zahl übermittelt hat, soll der Server doch bitte eine Bestätigung schicken, dass die Zahl angekommen ist. Darüberhinaus, soll der Server auch der App eine Benachrichtung schicken, wenn durch die Zahl ein Ereignis ausgelöst wurde (das kann erst Stunden nach dem die Zahl eingegegeben wurde, passieren). Android Benachrichtigung soll hier nicht das Thema sein, vereinfacht erst mal ein System.out.println.
Aber da weiß ich jetzt nicht, wie das gehen soll, das Smartphone ändert ja auch die ip? Brauche ich da auch ein dns server? Oder wie funktioniert das? Zuerst mal läuft die App auch nur auf einem Smartphone, sodass nicht an mehrere geschickt werden muss.
Kann mir da wer auf die Sprünge helfen? Danke.
folgende Ausgangssituation (siehe auch hier http://www.java-forum.org/java-basi...riable-thread-main-methode.html#post1041385):
Auf einem Rechner läuft ein Java Programm als Server. Eine Android App dient als Client. Stand der Dinge ist: Ich kann über die App eine Zahl an den Server schicken, dieser verarbeitet die Zahl und kann sie speichern.
Jetzt bin ich noch mit meiner Umsetzung etwas unzufrieden... mein Server läuft so:
Java:
while (laeuft) {
try {
clientSocket = serverSocket.accept(); // accept the client
// connection
inputStreamReader = new InputStreamReader(
clientSocket.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader); // get
// the
// client
// message
message = bufferedReader.readLine();
zahlVomSmartphone = Integer.parseInt(message);
if (zahlVomSmartphone != 0) {
setNeueZahl(zahlVomSmartphone);
}
System.out.println(message);
inputStreamReader.close();
clientSocket.close();
} catch (IOException ex) {
System.out.println("Problem in message reading");
}
}
und zwar läuft dieser als Thread, damit die normalen Berechnungen parallel laufen können.
Jetzt ist es aber so, dass bei dem o.g. Code der Server die ganze Zeit auf
Java:
clientSocket = serverSocket.accept();
Also um 19 Uhr soll das Programm sich automatisch beenden, jetzt hängt der Thread aber noch bei
Java:
clientSocket = serverSocket.accept();
Aber das will ich so natürlich nicht. Wenn es 19 Uhr ist, soll der Server auch direkt herunter gefahren werden. Ich hoffe man versteht was ich meine?
Wenn meine App dann eine Zahl übermittelt hat, soll der Server doch bitte eine Bestätigung schicken, dass die Zahl angekommen ist. Darüberhinaus, soll der Server auch der App eine Benachrichtung schicken, wenn durch die Zahl ein Ereignis ausgelöst wurde (das kann erst Stunden nach dem die Zahl eingegegeben wurde, passieren). Android Benachrichtigung soll hier nicht das Thema sein, vereinfacht erst mal ein System.out.println.
Aber da weiß ich jetzt nicht, wie das gehen soll, das Smartphone ändert ja auch die ip? Brauche ich da auch ein dns server? Oder wie funktioniert das? Zuerst mal läuft die App auch nur auf einem Smartphone, sodass nicht an mehrere geschickt werden muss.
Kann mir da wer auf die Sprünge helfen? Danke.