tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
394
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Roman90 Roman90 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    10
    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();
      }
    }
     

  2. #2
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    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.

  3. #3
    Roman90 Roman90 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    10
    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)
     

  4. #4
    Technoblade Technoblade ist offline Mitglied Gold
    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.
     

  5. #5
    SE Tutorials.de Gastzugang
    Ich würde sagen TO fehlen hier einige wichtige Grundlagen zum Thema EventHandling.
     

  6. #6
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    Eventuell sollte man für Roman90 erwähnen, dass actionPerformed jedes mal aufgerufen wird, wenn der Button geklickt wird, also ...

    so oft sie eben wollen
     
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

  7. #7
    Roman90 Roman90 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    10
    Ah es läuft nun ! Vielen Dank, ihr seid super !
     

Ähnliche Themen

  1. Kommunikation: Server -> Client
    Von Maik20 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 18.01.09, 11:13
  2. Client Server Kommunikation
    Von nathaniells freak im Forum Java
    Antworten: 4
    Letzter Beitrag: 13.02.08, 09:21
  3. Client Server Kommunikation
    Von nathaniells freak im Forum Coders Talk
    Antworten: 0
    Letzter Beitrag: 12.02.08, 14:50
  4. TCP Client-Server Kommunikation ?
    Von winx79 im Forum .NET Web und Kommunikation
    Antworten: 2
    Letzter Beitrag: 26.05.06, 10:54
  5. Client/Server-Kommunikation
    Von schokii im Forum Java
    Antworten: 2
    Letzter Beitrag: 27.06.05, 13:25

Stichworte