ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
394
394
EMPFEHLEN
-
Erstmal Hallo an alle !
Ich wollte eine kleine Client-Server Anwendung schrieben, in der Nachrichten (genauer gesagt 2 Koordinaten) über eine GUI (ein Textfeld für die x Koordinate, ein Textfeld für die y Koordinate und ein Button zum "abschicken") eingelesen werden und an den Server gesendet werden. Und zwar soll das Ganze in in einer Endlos-Schleife ablaufen - also jedes mal wenn der Benutzer mal Lust hat, kann er direkt die zwei Koordinaten an den Server senden.
Server seitig hab ich da keine Probleme mit (er liest einfach ständig in einem Thread die einkommenden Nachrichten...). Auch die GUI kann ich problemlos zusammenkleben, weiss allerdings nicht wie ich das in dem Client umsetzen soll (Methodenaufruf der Client Klasse durch die GUI?, Thread der auf GUI wartet?). Stehe grad voll auf der Leitung.
Wäre euch echt sehr verbunden wenn ihr mir weiterhelfen könntet.
hier der Client
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
import java.io.*; import java.net.*; import java.util.Scanner; public class Client { private BufferedReader in; private BufferedWriter out; private Socket client;; private int port; public Client(String host, int port){ this.host = host; this.port = port; } public void startClient(){ try{ client = new Socket(host, port); out = new BufferedWriter (new OutputStreamWriter(client.getOutputStream())); //hier endlosschleife mit Methodenaufruf sende(x,y) über GUI? o.O out.close(); } catch (IOException e) { System.err.println(e); } finally{ try{ if(client != null) client.close(); }catch (IOException e) { System.err.println(e); } } } public void sende(String x, String y)throws IOException{ out.write(x); out.newLine(); out.flush(); out.write(y); out.newLine(); out.flush(); } public static void main(String[] args) { new Client("localhost", 5000).startClient(); } }
-
03.06.11 15:41 #2
Ich verstehe nicht wieso du die Daten in einer Endlosschleife senden möchtest, du hast doch einen Button mit einem ActionEvent, mit dem du sagen kannst wann du speziell die Daten senden möchtest...
Falls es dir darum geht, dass ohne Endlosschleife deine Methode weiterlaufen würde, dann kann ich dich beruhigen. Nimm für deine GUI einfach z.B. einen JDialog, diesen kannst du Modal machen und deine Methode läuft erst weiter, wenn dieser wieder geschlossen wurde.
Im Endeffekt könnte dies etwa so aussehen:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
import java.io.*; import java.net.*; import java.util.Scanner; public class Client implements ActionListener{ private BufferedReader in; private BufferedWriter out; private Socket client; private int port; public Client(String host, int port) { this.host = host; this.port = port; } public void startClient(){ try{ client = new Socket(host, port); out = new BufferedWriter (new OutputStreamWriter(client.getOutputStream())); JDialog clientGUI = new JDialog(); //hier deinen Dialog konfigurieren inklusive clientGUI.setModal(true); & button.addActionListener(this); out.close(); } catch (IOException e) { System.err.println(e); } finally{ try{ if(client != null) client.close(); }catch (IOException e) { System.err.println(e); } } } public void sende(String x, String y)throws IOException{ out.write(x); out.newLine(); out.flush(); out.write(y); out.newLine(); out.flush(); } public void actionPerformed(ActionEvent ae) { //hier Daten senden } public static void main(String[] args) { new Client("localhost", 5000).startClient(); } }
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
Vielen Dank schon mal für deine Antwort!
Hab es mir aber leider etwas anders vorgestellt: Die Koordinaten sollen, jedes mal und unabhängig von anderen Prozessen an den Server gesendet werden. Das kann man sich ein wenig so vorstellen, wie eine Chat-Anwendung bei der die Clients, unabhängig davon was sonst gerade so los ist, eine Nachricht in ein Textfield eintippen und mit einem Send-Button an den Server schicken können (so oft sie eben wollen) und der Server verarbeitet das dann. Also Endlosschleifen-mäßig - Ich hoffe ihr versteht, was ich meine.
Edit: Es soll quasi so sein: die GUI (eine extra Klasse) enthält einen Button, der sich die Inhalte der beiden Textfelder holt und dann eine Methode der Klasse Client anwendet, mit der die Inhalte an den Server verschickt werden (so meine Überlegung).Geändert von Roman90 (03.06.11 um 16:18 Uhr)
-
03.06.11 16:45 #4
- Registriert seit
- Feb 2009
- Beiträge
- 193
Dazu benötigst du keine Endlosschleife. Also gut, sagen wir du hast eine Klasse GUI, mit einem Button senden und zwei Textfeldern für x und y. Für den Button musst du dann einfach einen ActionListener definieren. Ich hoffe das sagt dir etwas. Weiterhin musst du im Konstruktor der Klasse GUI eine Referenz auf deinen Client übergeben. In actionPerformed vom ActionListener rufst du dann die Methode sende von deinem Client auf. Ich hoffe das hilft dir.
-
03.06.11 17:08 #5SE Tutorials.de Gastzugang
Ich würde sagen TO fehlen hier einige wichtige Grundlagen zum Thema EventHandling.
-
03.06.11 17:11 #6
Eventuell sollte man für Roman90 erwähnen, dass actionPerformed jedes mal aufgerufen wird, wenn der Button geklickt wird, also ...
so oft sie eben wollenJeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
Ah es läuft nun ! Vielen Dank, ihr seid super !
Ähnliche Themen
-
Kommunikation: Server -> Client
Von Maik20 im Forum PHPAntworten: 2Letzter Beitrag: 18.01.09, 11:13 -
Client Server Kommunikation
Von nathaniells freak im Forum JavaAntworten: 4Letzter Beitrag: 13.02.08, 09:21 -
Client Server Kommunikation
Von nathaniells freak im Forum Coders TalkAntworten: 0Letzter Beitrag: 12.02.08, 14:50 -
TCP Client-Server Kommunikation ?
Von winx79 im Forum .NET Web und KommunikationAntworten: 2Letzter Beitrag: 26.05.06, 10:54 -
Client/Server-Kommunikation
Von schokii im Forum JavaAntworten: 2Letzter Beitrag: 27.06.05, 13:25





Zitieren
Login





