Einfache Rechenoperation über TCP Server

multihamster

Mitglied
Hey Leute, vielleicht kann mir hier jemand schnell weiterhelfen.

Ich will eine simple Android Anwendung programmieren. Ein Interface mit einem Eingabefeld in das eine Zahl eingegeben wird, einen Button der die Rechenoperation auslöst und ein Textfeld welches das Ergebnis vom Server ausgibt.
In das Eingabefeld soll zum Beispiel "192832" eingeben werden und wenn ich dann auf den Button klicke soll die Rechnung ausgeführt werden und der Server z.B. die Quersumme bilden und dann das Ergebnis in meinem Textfeld in meinem Interface ausgeben.

Die Rechnung soll mittels eines TCP Servers gelöst und wieder zurückgesendet werden. Wie könnte das grob aussehen? Die Syntax für den TCP Server habe ich, aber wie binde ich dort meinen Button, meine Eingabefeld und mein Ausgabefeld ein?

Würde mich über eure Hilfe sehr freuen!
Danke schonmal im Voraus!
 

Anhänge

  • Bildschirmfoto 2022-03-07 um 08.56.15.png
    Bildschirmfoto 2022-03-07 um 08.56.15.png
    203,6 KB · Aufrufe: 2
G

Gelöschtes Mitglied 65838

Gast
deinem server ist es komplett egal ob da ein button ist

dein server passt nur darauf auf ob eine anfrage kommt dass jemand irgendwas berechnet haben will und liefert das ergebnis zurück
das ergebnis was zurück kommt setzt du dann in dein text feld ein
 

multihamster

Mitglied
Mein Server nimmt aber die Zahl als Bytestream über TCP entgegen, führt die Berechnung aus und sendet das Resultat zurück.
Das heißt ich würde hier trotzdem die eigentliche Rechenoperation in meine MainKlasse Beispielsweise vornehmen?
 
G

Gelöschtes Mitglied 65838

Gast
nein... du fragst beim server an und schickst ihm eine zahl ( objecct stream wahrscheinlich besser aber kann mich auch irren )

währenddessen wartet deine App auf eine antwort vom server und erwartet halt ein ergebnis, wenn das da ist dann setzt du dasd ergebnis in dein text feld rein

deine app berechnet gar nix ansich die fragt nur an und wartet auf ein ergebnis
 
G

Gelöschtes Mitglied 65838

Gast
naja .. server musst du starten und der läuft die ganze zeit... und der client muss den server irgendwie finden

dann sollten die auch noch sachen hin und her schicken können
irgend ein tutorial von den paar millionen die es dazu gibt wird schon passen
 

KonradN

Super-Moderator
Mitarbeiter
Mir fehlt da einiges an Informationen bzw. da passt einiges nicht: Was genau ist bitte Dein Ziel? Was willst Du lernen oder erreichen?

TCP Ist ein Protokoll auf dem viele weitere Protokolle aufbauen. Es ist unüblich, da selbst irgendwas mit Sockets zu machen. Webservices sind da der übliche Weg, speziell REST Services. Mit einem der vielen Tutorials hat man auch als Anfänger den in weniger als 1 Stunde.
==> TCP/IP selbst zu machen ist extrem unüblich. Das kann maximal ein "Ich will diese Basics auch lernen" sein, wobei da der Sinn zweifelhaft ist: Wo braucht man das heutzutage noch?
==> Wenn Du mit Sockets spielen willst: Da passt dann Android nicht rein. Das ist unnötige Komplexität und wenn Du eine Sache lernen willst, dann konzentriere Dich darauf. Und dann: Mit Android Webservice anzusprechen wäre dann auch wieder trivial - mit den vielen Tutorials hat man schnell einen ersten Code.

Der Vorteil ist, dass Du hier die volle Unterstützung von Frameworks bekommst was gerade bei Security und Co extrem viel Arbeit abnimmt.
 

multihamster

Mitglied
Mir fehlt da einiges an Informationen bzw. da passt einiges nicht: Was genau ist bitte Dein Ziel? Was willst Du lernen oder erreichen?

TCP Ist ein Protokoll auf dem viele weitere Protokolle aufbauen. Es ist unüblich, da selbst irgendwas mit Sockets zu machen. Webservices sind da der übliche Weg, speziell REST Services. Mit einem der vielen Tutorials hat man auch als Anfänger den in weniger als 1 Stunde.
==> TCP/IP selbst zu machen ist extrem unüblich. Das kann maximal ein "Ich will diese Basics auch lernen" sein, wobei da der Sinn zweifelhaft ist: Wo braucht man das heutzutage noch?
==> Wenn Du mit Sockets spielen willst: Da passt dann Android nicht rein. Das ist unnötige Komplexität und wenn Du eine Sache lernen willst, dann konzentriere Dich darauf. Und dann: Mit Android Webservice anzusprechen wäre dann auch wieder trivial - mit den vielen Tutorials hat man schnell einen ersten Code.

Der Vorteil ist, dass Du hier die volle Unterstützung von Frameworks bekommst was gerade bei Security und Co extrem viel Arbeit abnimmt.
Es geht hierbei um ein Beispiel das ich lösen muss. Das Beispiel soll uns eben mit TCP bzw. Netzwerkkommunikation und Android Studio etwas vertraut machen.

Aufgabenstellung ist ein einfaches Interface wie oben beschrieben.
Die eingegeben Zahl soll per Bytestream vom Server über die TCP Verbindung (da haben wir eine server-domain und einen Port bekommen) entgegen genommen werden, eine Rechenoperation (zum Beispiel Quersummer der eingegeben zahl ausrechen) und das Ergebnis dann wieder zurückgeben und im Interface anzeigen.
 
G

Gelöschtes Mitglied 65838

Gast
aber der server ist ja kein "tcp server" ... das hin und her schicken der daten läuft über TCP aber das kann dir ansich wurscht sein... dich interessiert nur der bytestream auf dem server und der beim client und wie das ping pong funktioniert
 

KonradN

Super-Moderator
Mitarbeiter
Das Beispiel soll uns eben mit TCP bzw. Netzwerkkommunikation und Android Studio etwas vertraut machen.
Ok, dann entspricht es genau der Aufgabe, dass ihr euch genau mit diesen Dingen auseinander setzt. Zu TCP Servern gibt es einige Tutorials. Ist aber alles relativ einfach, so man mit Threads arbeitet (Alternativ wäre Asynchron das Vorgehen, das genommen würde aus dem nio package. Aber lassen wir das mal einfach).

Server:
- Öffnet einen Server Socket und wartet dann in einer Endlosschleife auf eingehende Verbindungen (accept Aufruf blockiert).
- Immer wenn eine Verbindung zustande gekommen ist, dann wird ein neuer Thread gestartet, der auf Daten vom Client wartet. Immer wenn Daten herein kommen, werden diese ausgewertet und eine Antwort gesendet. Dann wird die Verbindung geschlossen.

Client:
- Hier ist es ähnlich. Hier wird dann aber ggf - um die UI nicht zu blockieren - folgendes gemacht:
--> Eingabe validiert und in Variable gespeichert.
--> Neuer Thread, dieser öffnet einen Socket zum Server. Sobald die Verbindung da ist, wird die Eingabe an diesen geschickt. Danach wird auf die Antwort gewartet. Sobald diese geladen wurde, wird der Socket geschlossen und die Antwort wird an die UI gegeben.
 

multihamster

Mitglied
Ok, dann entspricht es genau der Aufgabe, dass ihr euch genau mit diesen Dingen auseinander setzt. Zu TCP Servern gibt es einige Tutorials. Ist aber alles relativ einfach, so man mit Threads arbeitet (Alternativ wäre Asynchron das Vorgehen, das genommen würde aus dem nio package. Aber lassen wir das mal einfach).

Server:
- Öffnet einen Server Socket und wartet dann in einer Endlosschleife auf eingehende Verbindungen (accept Aufruf blockiert).
- Immer wenn eine Verbindung zustande gekommen ist, dann wird ein neuer Thread gestartet, der auf Daten vom Client wartet. Immer wenn Daten herein kommen, werden diese ausgewertet und eine Antwort gesendet. Dann wird die Verbindung geschlossen.

Client:
- Hier ist es ähnlich. Hier wird dann aber ggf - um die UI nicht zu blockieren - folgendes gemacht:
--> Eingabe validiert und in Variable gespeichert.
--> Neuer Thread, dieser öffnet einen Socket zum Server. Sobald die Verbindung da ist, wird die Eingabe an diesen geschickt. Danach wird auf die Antwort gewartet. Sobald diese geladen wurde, wird der Socket geschlossen und die Antwort wird an die UI gegeben.
Danke schonmal, das hilft mir rein vom Verständnis her schon sehr!
Ich schaffe es einen simplen Taschenrechner in Android Studio zu programmieren. Hier kann ich meine Eingabefelder und Ausgabefelder direkt in der Main.Activity Methode definieren. Wenn ich das ganze aber über einen TCP Server & Client lösen will, lässt er mich in den jeweiligen Klassen aber nicht auf die EditText felder zugreifen. Der Befehl: EditText txt = findViewByID(R.id.editTextID); lässt er nicht zu. Dann sagt er "cannot Resolve Method...
 

KonradN

Super-Moderator
Mitarbeiter
Wenn ich das ganze aber über einen TCP Server & Client lösen will, lässt er mich in den jeweiligen Klassen aber nicht auf die EditText felder zugreifen. Der Befehl: EditText txt = findViewByID(R.id.editTextID); lässt er nicht zu. Dann sagt er "cannot Resolve Method...
Was genau hast Du denn versucht? Wo ging das nicht?

Auf dem Server kannst Du natürlich nicht auf die Elemente des Clients zugreifen. Wie sollte das auch gehen? Da bekommst Du die Werte im byte Stream übermittelt, dann hast Du die Werte und machst damit etwas. Und dann geht es den gleichen Weg zurück.
 

Jw456

Top Contributor
Server und Client sind ja zwei getränte Programme die meistens auf unterschiedlichen Geräten laufen.
Wenn beide unter Android laufen soll sind das zwei Apps eine als Server, eine als Client.
Kommuniziert wird über TCP.

Sinnvoller und einfacher ist es zwei Handys zu benutzen im gleichen Lan.

Server warte auf eine TCP Verbindung wird eine hergestellt, empfängt er die Zahl berechnet das Ergebnis, und sendet das Ergebnis über TCP wieder an den Client.

Der Client verbindet sich mit dem Server sendet mittels TCP die Zahl an den Server wartet bis die Antwort kommt und zeigt das Ergebnis an.


 

Jw456

Top Contributor
Ps
Wichtig Netzwerk Kommunikation muss bei Android in einen Thread erfolgen.
Das verbinden in Main Thread ist seit Android 3.0 nicht mehr möglich.


Auch seit Android 8 ist Cleartext nicht mehr default Einstellung.
Das solltest du im Manifest hinzufügen. Das wird auch bei einer TCP Socket Verbindung notwendig sein nicht nur bei Http.
 

Jw456

Top Contributor
Es geht hierbei um ein Beispiel das ich lösen muss. Das Beispiel soll uns eben mit TCP bzw. Netzwerkkommunikation und Android Studio etwas vertraut machen.

Aufgabenstellung ist ein einfaches Interface wie oben beschrieben.
Die eingegeben Zahl soll per Bytestream vom Server über die TCP Verbindung (da haben wir eine server-domain und einen Port bekommen) entgegen genommen werden, eine Rechenoperation (zum Beispiel Quersummer der eingegeben zahl ausrechen) und das Ergebnis dann wieder zurückgeben und im Interface anzeigen.
OK da brauchst du ja nur den Client
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Android Fragen zu einfache Web-Chat? Android & Cross-Platform Mobile Apps 1
K Null-Pointer-Exception in ListView - wird über Datenbank gefüllt Android & Cross-Platform Mobile Apps 1
H Android Anklickbare Region über RadioButton zentrieren Android & Cross-Platform Mobile Apps 1
B Android TCP-Verbindung zum Server über welche Prozess auslagerung nutzen? Android & Cross-Platform Mobile Apps 1
S Android Absoluter Neuling: EditText zur Laufzeit verändern bzw. über Button Android & Cross-Platform Mobile Apps 2
V Bytes (Wertebereich 0-255) über BLE empfangen,lesen und speichern Android & Cross-Platform Mobile Apps 1
L Android SQLite mit HSQLDB über Android synchronisieren Android & Cross-Platform Mobile Apps 13
Florum Android FTP Upload über Android Android & Cross-Platform Mobile Apps 15
T Musik über Bluetooth streamen Android & Cross-Platform Mobile Apps 2
B Android Mehrer Hexwerte über outputstream senden, und empfangen (Bluetoth) Android & Cross-Platform Mobile Apps 9
R W-Lan Problem über Sockets Android & Cross-Platform Mobile Apps 1
R Android App mit ausgeschaltetem Display über Volume-Tasten steuern Android & Cross-Platform Mobile Apps 0
A Android Login über Serveranbindung Android & Cross-Platform Mobile Apps 3
B Datei downloaden über DialogBox? Android & Cross-Platform Mobile Apps 4
T Android Druckauftrag über Mobiles Internet Android & Cross-Platform Mobile Apps 2
L Android Android über Java Code connecten? Android & Cross-Platform Mobile Apps 2
N Java ME Server-Client Verbindung über Wifi Android & Cross-Platform Mobile Apps 6
D Android JMS über Android Android & Cross-Platform Mobile Apps 4
S DTMF-Töne über MIDlet senden Android & Cross-Platform Mobile Apps 3
Kidao Wie schließt man ein Midlet über Tasten? Android & Cross-Platform Mobile Apps 3
G SMS über Handy SMS Interface versenden Android & Cross-Platform Mobile Apps 5
B RFCOMM über serielle Schnittstelle RS 232 MIDLET Android & Cross-Platform Mobile Apps 1
T Installation über WAP Android & Cross-Platform Mobile Apps 3
J Bücher über Java-Spiele-Programmierung Android & Cross-Platform Mobile Apps 3
B Kann man bei Nokia-Handy's über Java die IR ansteuern? Android & Cross-Platform Mobile Apps 6

Ähnliche Java Themen

Neue Themen


Oben