Server / Client Anwendung, Client GUI Probleme

B

bobo90

Gast
Hallo,

ich bin gerade dabei eine Server / Client Anwendung zu schreiben. Soll nichts großes werden, Client sendet eine Anfrage an den Server, dieser Wertet aus, und sendet zurück. Zum Beispiel wird die Zahl 5 geschickt, und Server sendet 6 oder so zurück.

Soweit ist das kein Problem, ich habe beides auf Konsolenbasis. Den Clienten wollte ich doch nun jedoch Grafisch durch eine GUI darstellen. allerdings hapert es da schon.
Wie sieht der Aufbau aus, also wo muss ich die Socket Anbindung hinschreiben? Da ich mehrere Buttons haben möchte, und diese auf die Funktionen (zum Beispiel output stream) zugreifen, müssten die doch global Definiert werden oder nciht? Oder bin ich nu total auf den Holzweg ?

Ich danke jetzt schonmal für jeden denkanstoß ;)

Gruß
 

_Andi91

Bekanntes Mitglied
Ich weis nicht ob ich dich jetzt richtig verstanden habe aber ich würde es so machen:

Für die GUI 2 Klassen. einen View und einen ViewController
Im View "malst" du deine Oberfläche mit den Buttons. Die ViewController Klasse implementiert das Interface ActionListener und deine Buttons registrien sich beim ViewController (bsp jButton.addActionListener(controller)).
In der Methode actionPerformed() im Controller kannst du dann entsprechend die Aktionen behandeln.
Entweder du schreibst die Logik für alle Aktionen direkt in diese Methode oder - besser - du schreibst für jeden (unterschiedlichen) Vorgang eine Methode die dann je nachdem aus der actionPerformed() aufgerufen wird.
Unterscheiden kannst du die Actions mittels des ActionCommands (bei Buttons jButton.setActionCommand, beim ActionEvent event.getActionCommand)

Ich bin jetzt übrigens mal von Swing ausgegangen.


Gruß, Andi
 
B

bobo90

Gast
okay, danke.. soweit klingt das logisch, aber eine Frage habe ich nmch, wie mache ich das, dass sich die Buttons beim ViewController registrieren?
 

_Andi91

Bekanntes Mitglied
über die Methode addActionListener eines JButtons.
Du musst dir dafür die Referenz auf den Controller im View natürlich speichern. Diesen gibst du dann als Übergabeparameter an.
 
B

bobo90

Gast
also so wie ich das nun verstanden habe, würde ich das so umsetzen:
Java:
class View 
{
 //zeichne Fenster
}

 class ViewController
{
//Verwalte Methoden
jButton.addActionListener(controller)
}
 

_Andi91

Bekanntes Mitglied
nicht ganz. Ich hab dazu mal ein kleines(!) Beispiel geschrieben:

View:

Java:
public class View extends JFrame
{
	private static final long serialVersionUID = 8739874783218737794L;
	private ViewController controller = null;
	private JButton button = null;
	
	public View(ViewController controller)
	{
		setController(controller);
		
		init();
	}

	public void setController(ViewController controller) 
	{
		this.controller = controller;
	}
	public ViewController getController() 
	{
		return controller;
	}
	
	private void init()
	{
		//Fenster+Komponenten initialisieren etc.
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JButton button = new JButton("Beschriftung");
		button.setActionCommand("action1");
		button.addActionListener(controller);
		
		add(button);
		
		pack();
	}
}


ViewController
Java:
public class ViewController implements ActionListener
{
	private View view = null;

	public ViewController()
	{
		setView(new View(this));
		
		view.setVisible(true);
	}
	
	public void setView(View view)
	{
		this.view = view;
	}
	public View getView()
	{
		return view;
	}
	
	@Override
	public void actionPerformed(ActionEvent event) 
	{
		if(event.getActionCommand().equals("action1"))
		{
			doHandleAction1();
		}
	}

	private void doHandleAction1() 
	{
		//Hier Aktion bearbeiten
		
		JOptionPane.showMessageDialog(getView(), "Button gedrueckt");
	}
}


Klasse um Beispiel Anwendung zu starten:
Java:
public class AppStart 
{
	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		new ViewController();
	}
}
 
B

bobo90

Gast
super, dankeschön das Funktioniert =)

Wenn du mir noch eine Sache verraten könntest ( ich komm grad nicht drauf, allerdings seh ich hute den Wald lauter Bäumen nicht mehr...), wo du alles das Fenster zeichnest. Ich wollte ein neues reinsetzen, das etwas größer ist, und wo ich mehr Buttons reinsetzen kann. Wenn ich die Funktion umprogrammiere, zeichnet er mir immer zwei Fenster....
 

_Andi91

Bekanntes Mitglied
das Fenster wird nur in der Methode init() in der Klasse View gezeichnet.
Die Methode init() wird im Konstruktor der View Klasse aufgerufen.

Im Konstruktor des ViewControllers wird der View erzeugt(=View Konstruktor Aufruf) und anschließend auf sichtbar gesetzt.
 
B

bobo90

Gast
ich dumbatz... hatte die Groß / kleinschreibung nicht beachtet, deswegen ging es nicht.

Also das Fenster malt er mir ganz perfekt, aber ohne Buttons etc.

add(btnverbinden) funktioniert, allerdings füllt er das Fenster mit einem Button. D.h. der Button wird mit dem Fenster größer.

Verändere ich das add() in View.add(button) um, zeichent er mir das Fenster ohne irgendeinen Inhalt..

Gibt es da spezielle Methoden oder sowas für?
Dankeschonmal =)

Java:
private void init()
    {
        
        //Fenster+Komponenten initialisieren etc.
        JFrame View = new JFrame("FrameDemo");
        setDefaultCloseOperation(View.EXIT_ON_CLOSE);
        //View.getContentPane().add(btn_verbinden, BorderLayout.CENTER);


        JTextField tfipserver = new JTextField("");
        JButton btnverbinden = new JButton("Verbinden");
        
        //JTextField tf1 = new JTextField("");

        btnverbinden.setActionCommand("action1");
        btnverbinden.addActionListener(controller);
        
       
        add(btnverbinden);
        
        //View.add(btnverbinden);

        pack();
        
    }
 

_Andi91

Bekanntes Mitglied
mh ich glaub du hast da was falsch verstanden.
In der init Methode brauchst du keine neue Instanz von JFrame erzeugen, da die Klasse View bereits von JFrame erbt.
So hast du im Moment 2 Frames wobei dein "View" (Variablen bitte klein am Anfang ;) ) Frame niemals angezeigt wird, weil kein setVisible(true) erfolgt.

Für die Anordung der Buttons, Textfelder etc. gibt es in Swing sogenannte LayoutManager (bsp. BorderLayout, GridLayout, GridBagLayout etc.)
 
B

bobo90

Gast
okay... also so wie ich das verstanden habe: Gitter legen, Buttons drauf und fertig ...;) Rein Theoretisch...

Danke =) Nach der Prüfung mach ich dann mal weiter. Vielen Dank nochmal :)
 
B

bobo90

Gast
vielen dank nochmal für die hilfe :) Ich komme bisher ganz gut zurecht, allerdings noch eine Frage, wo ich nicht weiter komme:

Ich habe ein Eingabefeld, und einen Button. In das Feld soll die Adresse des Servers (Standard: 127.0.0.1) und der Button dient zum Verbinden. Die Verbindung bleibt allerdings nur in der Funktion. kann also nicht weiter auf sie zugreifen (Server Socket).

Bin ich auf den richtigen Weg, wenn ich eine globale Funktion mache, und das dort definiere? Oder liege ich komplett falsch ?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
gamebreiti Socket Server / Client Anwendung Manipulation von Objekten durch Server Netzwerkprogrammierung 9
F Server Client Anwendung mit UDP Netzwerkprogrammierung 2
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
Ollek Socket Sucher passende Server/Client Lösung für meine Anwendung Netzwerkprogrammierung 2
S Socket Einfache Client/Server-Anwendung Netzwerkprogrammierung 11
W Server-Client Anwendung Netzwerkprogrammierung 2
E Erste Server-Client Anwendung Netzwerkprogrammierung 2
P Mp3s Streamen - Client-Server-Anwendung Netzwerkprogrammierung 17
A Verständnisproblem mit Client/Server-Anwendung Netzwerkprogrammierung 20
S Server - Client Anwendung Netzwerkprogrammierung 3
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
J Client-Server und SOAP Netzwerkprogrammierung 23
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
D Slf4j - Logging - Client-Server Architektur Netzwerkprogrammierung 3
J client server mit nur einem PC Netzwerkprogrammierung 33
M Socket Nachricht von TCP-Client an Server schicken Netzwerkprogrammierung 12
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
G Server-Client IO Problem Netzwerkprogrammierung 6
I Socket Das erste Server-Client Programm Netzwerkprogrammierung 16
M Socket Server antwortet dem Client nicht Netzwerkprogrammierung 6
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
P Server als Client nutzen Netzwerkprogrammierung 8
D Socket Run Args Client/Server Socket Netzwerkprogrammierung 1
Cromewell Socket Multithreaded Server und Client Netzwerkprogrammierung 1
Y Client/Server/DB communication Netzwerkprogrammierung 3
JavaWolf165 Socket mit .writeUtf etwas vom Client zum Server schicken Netzwerkprogrammierung 13
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
brainless Client Server Kommunikation verschlüsseln Netzwerkprogrammierung 13
T Socket Server/Client Kommunikation Netzwerkprogrammierung 8
A RMI Wo treten Exceptions bei RMI Aufrufen auf? Auf Client oder auf Server? Netzwerkprogrammierung 3
A ByteBuffer - Client/Server Netzwerkprogrammierung 9
K C# Server - Android Client Netzwerkprogrammierung 0
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
J Sichere Kommunikation bei Server Client Netzwerkprogrammierung 3
T Frage zu Client-Server Applikation Netzwerkprogrammierung 2
H Socket Client/Server Socket Programmieren Netzwerkprogrammierung 1
M Theoretische Frage zu Server - Client Netzwerkprogrammierung 2
P HTTP Server / Client Netzwerkprogrammierung 1
E Thematik Client server Netzwerkprogrammierung 2
D Client/Server per Crossover Lan Kabel Netzwerkprogrammierung 1
S Client Server Connection Netzwerkprogrammierung 4
S Sichere Server/Client Architektur Netzwerkprogrammierung 1
D Chat Server/mehre Client Netzwerkprogrammierung 9
I Server+Client Netzwerkprogrammierung 3
N Client am Server abmelden Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
U Socket Instant Messanger (Server Linux, Client Windows) Netzwerkprogrammierung 1
Athena Grundsatzfragen zu Client-Server-Architektur / Matchmaking Netzwerkprogrammierung 1
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
F Client Server DB Netzwerkprogrammierung 0
A Verständnisfrage Multi-Threaded Client/Server Netzwerkprogrammierung 5
F Tipps zum Thema Server/Client vie SOAP Netzwerkprogrammierung 0
F Socket Java - Server/Client simple Netzwerkprogrammierung 1
R Zeitliche Syncronisation Server - Client Netzwerkprogrammierung 0
S Server-Client: Image senden Netzwerkprogrammierung 2
C Multithreading Client / Server erklärt Netzwerkprogrammierung 11
P server - client verbindung (anfänger) Netzwerkprogrammierung 8
J Client Server - Serialisierung Netzwerkprogrammierung 8
Luk10 Server / Client: Clients speichern! Netzwerkprogrammierung 6
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
K Client => Server Netzwerkprogrammierung 2
A ? Home-Network, Server/Client-Einrichtung Netzwerkprogrammierung 4
S Socket Server: ConnectionError vom Client erkennen Netzwerkprogrammierung 31
A Java Server - IOS Client Applikation Netzwerkprogrammierung 20
L Ratschlag zur Umsetzung einer client-server-Kommunikation Netzwerkprogrammierung 6
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
N Client-Server-Datenbank Netzwerkprogrammierung 13
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
B Client/Server Connection Problem Netzwerkprogrammierung 2
S Server Client Daten hin und herschicken Netzwerkprogrammierung 2
R Server zu Client Kommunikation Netzwerkprogrammierung 11
D TCP Verbindung (Java Client und Visual Basic Server) Netzwerkprogrammierung 12
S Socket Applet Client bekommt keine GLOBALE Verbindung zum Server Netzwerkprogrammierung 25
T Server und Client verbinden nicht Netzwerkprogrammierung 6
D Server Client Verbindung - Unexpected End of File - Invalid HTTP Response Netzwerkprogrammierung 4
V Socket UDP Server/Client Kommunikation sehr langsam Netzwerkprogrammierung 2
das-mo Client/Server sendet nicht Netzwerkprogrammierung 7
Z Socket Server/Client vernünftiger Verbindungsabbruch Netzwerkprogrammierung 4
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
F TCP Server/Client Netzwerkprogrammierung 14
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
N eine klasse mit server & client Netzwerkprogrammierung 5
D RMI Gui auf client updaten basierend auf den Property Änderung des Models auf dem Server ohne polling Netzwerkprogrammierung 12
T Socket Client versucht zyklische Verbindung zum Server Netzwerkprogrammierung 4
F Socket Server/Client Kommunikation Netzwerkprogrammierung 4
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
D Projektstruktur / Architektur (Client-Server) Netzwerkprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben