Socket Java Server mit Android App, Antwort vom Server an App

Fabse

Aktives Mitglied
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:
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();
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
Java:
clientSocket = serverSocket.accept();
, 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.
 

Gucky

Top Contributor
Du könntest einen zweiten Thread starten, dieser berechnet, wie lange es noch dauert, bis es 19 Uhr ist und dann legst du ihn schlafen. Wenn es 19 Uhr ist, beendet dieser Thread den Serverthread und beendet danach das Programm.
 

Fabse

Aktives Mitglied
Ok das mit der Uhrzeit habe ich dann.
Aber ich weiß leider noch nicht wie ich den Server dann stoppen kann...da der Server ja immer beim accept "hängt".
 

Gucky

Top Contributor
Im Server gibt es eine Methode schließeAb(), die die Verbindungen trennt und alles macht, was du für richtig hältst und am Schluss wird System.exit(0) aufgerufen.
 

Fabse

Aktives Mitglied
Ok habe jetzt soweit fast alles... aber eins blicke ich noch nicht:
App ist mein Client. Java Programm Server. Wenn ich jetzt Montag um 10 eine Zahl speicher (also sie wird über die App an den Server übermittelt er speichert sie) und am Mittwoch um 15 Uhr passiert was mit der Zahl, sodass der Client benachrichtigt werden soll, wie geht das? Also der Client sendet am Mittwoch keine zahl an den Server es kommt keine Verbindung zu stande. Aber dann soll der Server dem Client eine Nachricht schicken.
Kann ich dann einfach, wenn ich meine App starte eine Verbindung aufbauen und die bleibt dann so lange bestehen?
Bzw. muss sie ja nicht bestehen bleiben, aber der Server muss ja wissen an wen die Nachricht gehen soll...

Versteht man was ich meine? Vorschläge?
 

Gucky

Top Contributor
Du implementierst eine Warteschlange, in der alles gespeichert wird, was der Server den Klienten gerne mitteilen würde. Diese Schlange gibt es für jeden Klienten.
Verbindet sich ein Klient, so wird nachgesehen, ob Mitteilungen vorhanden sind. Wenn ja, dann werden diese Mitteilungen verschickt, wenn nein, dann eben nicht.

Zu der permanenten Verbindung: du müsstest gucken, wie praktikabel das ist. Wenn die Synchronisation nicht so wichtig ist, kannst du dich auch pro Minute ein mal verbinden, nachgucken, ob Nachrichten vorhanden sind und dann wieder trennen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
F Server für Java Applikationen Netzwerkprogrammierung 16
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
Aruetiise Socket Java Programm auf Server Netzwerkprogrammierung 3
S Java Chat Server Netzwerkprogrammierung 8
M Java Eingabe auf FTP Server übergeben Netzwerkprogrammierung 4
M Socket Java Server: NullPointerException Netzwerkprogrammierung 4
J Java Server empfängt php inhalt nicht Netzwerkprogrammierung 1
X Mit Java eine Applikation auf einem anderen Windows Rechner (Windows Server 2008) starten Netzwerkprogrammierung 1
F Java Server Scanner oder InputStream kann nicht gelsesen werden! Netzwerkprogrammierung 6
H Socket Java | Server sendet Nachricht nur wenn vorher eine JOptionPane-Nachricht ausgegeben wurde. Netzwerkprogrammierung 2
G Multiple Clients and one Server --> java.lang.NullPointerException Netzwerkprogrammierung 1
E Java Server übers Internet erreichen Netzwerkprogrammierung 4
F Socket Java - Server/Client simple Netzwerkprogrammierung 1
A Java Server - IOS Client Applikation Netzwerkprogrammierung 20
C Kostenloser Java-Server? Netzwerkprogrammierung 25
H Socket Java Chat - Verbindung zum Server fehlgeschlagen. Netzwerkprogrammierung 5
D TCP Verbindung (Java Client und Visual Basic Server) Netzwerkprogrammierung 12
P FTP Server mit Java, möglich ? Netzwerkprogrammierung 4
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
F Java SMTP Server Netzwerkprogrammierung 9
J HTTP Java Client / Server Internet - Webshare ?! Netzwerkprogrammierung 9
S Socket Java Server StreamCorruptedException Netzwerkprogrammierung 7
L C# WCF Server und Java Client? Netzwerkprogrammierung 2
N Socket Java server c# client problem Netzwerkprogrammierung 7
P Java Programm als Dienst auf Server Netzwerkprogrammierung 11
M client server in java Netzwerkprogrammierung 4
P Java Web Server Netzwerkprogrammierung 3
D Umwandlung von Java WebStart zu Java Server Pages Netzwerkprogrammierung 6
W Terminal-Server (Windows 2003) und Java Netzwerkprogrammierung 9
E java.net.SocketException: Unexpected end of file from server Netzwerkprogrammierung 2
H Mit Java ein JPG auf einem Server öffnen. Netzwerkprogrammierung 7
I Java Client - C Server Netzwerkprogrammierung 8
H Java.nio Server, Java.io Client Netzwerkprogrammierung 3
A Java-Programm auf einem Server laufen lassen Netzwerkprogrammierung 9
R Kommunikationsproblem zwischen JAVA-client und C-Server Netzwerkprogrammierung 5
M Java Server mit verschiedenen Kommunikationsmöglichkeiten Netzwerkprogrammierung 6
E Java Server via Swing offline setzen Netzwerkprogrammierung 4
M Java XML-RPC Server - PHP XML-RPC Client ? Netzwerkprogrammierung 8
F Java Client-Server-Client Verbindung Netzwerkprogrammierung 9
J Server soll Zugriff auf Java Programm ermöglichen Netzwerkprogrammierung 3
R Java Applikation als Client ,Servlet als Server: Problem? Netzwerkprogrammierung 3
D Server Socket läuft nicht -> java.net.SocketException: Netzwerkprogrammierung 4
N eigener Java-Server => PHP einbauen Netzwerkprogrammierung 67
S Kommunikation Fortran <-> Java auf Client-Server-Archi Netzwerkprogrammierung 2
S MySQL, PHP, Perl Support in einem Java HTTP Server? Netzwerkprogrammierung 7
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
M JAX-WS unter Java 17 plötzlich nicht mehr möglich Netzwerkprogrammierung 5
K Java RMI bricht ab wenn Remote eine Methode ausgeführt werden soll Netzwerkprogrammierung 5
M HTTP Let's Encrypt und Java Trust-Store Netzwerkprogrammierung 6
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
D path-Variablen in eine URL hinzufügen mit Java 1.8 Netzwerkprogrammierung 2
x46 Java SSLContext erstellen mit SSL-Zertifikat Netzwerkprogrammierung 1
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
N Java socket Programmierung Filme verschicken Netzwerkprogrammierung 20
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
V Browsergame mit Java(WebSocketServer) als Backend? Netzwerkprogrammierung 5
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
S Fragen zu Java Webservice mit Axis2 Netzwerkprogrammierung 0
M Mit Java Mail Mails an Webmailer schicken Netzwerkprogrammierung 1
mor16Euro HTTP Php website mit Java aktualisiern Netzwerkprogrammierung 6
T HTTP JAVA Browser Konsolenanfrage(JavaScript) Netzwerkprogrammierung 7
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
L Remote Desktop per Java steuern Netzwerkprogrammierung 4
J Webserver mit Java schreiben? Netzwerkprogrammierung 4
D JAVA RMI Netzwerkprogrammierung 1
K HTTP Mit Java HTML Codeauslesen um damit zu arbeiten Netzwerkprogrammierung 7
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
A Bestimmter URL/Certificate per Java immer vertrauen (Trustmanager/HostnameVerifier) Netzwerkprogrammierung 1
T VPN-Verbindung über Java Netzwerkprogrammierung 4
M HTTP PATCH Request mit Java ausführen Netzwerkprogrammierung 2
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
L FTP Java Interpreter unterbindet SSL Handshake Netzwerkprogrammierung 2
C IFrame mit java auslesen Netzwerkprogrammierung 1
A FTP wie kann ich von java auf datei in fpt://192.168.178.1 lesen/schreiben? Netzwerkprogrammierung 3
C Datensammlung mit Java RMI Netzwerkprogrammierung 0
K Java Jsoup : OnLoad Netzwerkprogrammierung 0
Carres HTTP Vorhandenen Session-ID Cookie von Firefox, Chrome oder IE in Java verwenden Netzwerkprogrammierung 2
B Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen Netzwerkprogrammierung 1
Z HTTP HTML Element auslesen in Java Netzwerkprogrammierung 1
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
Thallius HTTP HTTPS unter Java 1.6 schlägt fehl Netzwerkprogrammierung 4
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
P Chat in Java Netzwerkprogrammierung 3
C java.net.ConnectException: Operation timed out? Netzwerkprogrammierung 2
T curl request in java umwandeln Netzwerkprogrammierung 4
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
L Java RMI Objekt konsistenz Netzwerkprogrammierung 1

Ähnliche Java Themen

Neue Themen


Oben