Client Server

Ethernut

Mitglied
Guten Abend liebe Forenuser,

ich bin ein Anfänger in Java und tue mich schwer bei unserem Client Server Beispiel.
Ich habe hier meine 2 Klassen, hier die Client Klasse:

Java:
package at.tw.ose;

import java.net.*;
import java.io.*;

public class Client {
	Client() throws IOException {
		while (true) {
			Socket server = new Socket("localhost", 1234);

			BufferedReader input_socket = new BufferedReader(
					new InputStreamReader(server.getInputStream()));

			BufferedReader input = new BufferedReader(new InputStreamReader(
					System.in));

			BufferedWriter output = new BufferedWriter(new OutputStreamWriter(
					server.getOutputStream()));

			System.out.println("Bitte Text eingeben (Client): ");
			String server_text = input.readLine();
			System.out.println("Folgender Text wurde eingegeben: "
					+ server_text);
			output.write(server_text);
			System.out.println("Text wurde gesendet");
			output.flush();
			System.out.println("Text von Server empfangen: "
					+ input_socket.read());
		}
		// }
		// server.close();
		// input.close();
		// output.close();
	}

	public static void main(String[] argv) {
		try {
			Client client = new Client();
		} catch (IOException e) {
			System.out.println(e);
		}
	}
}

Hier die Server Klasse:

Java:
package at.tw.ose;

import java.net.*;
import java.io.*;

public class KleinerServer2 {
	ServerSocket server = new ServerSocket(1234);

	char[] cbuf = new char[1024];

	KleinerServer2() throws IOException {
		while (true) {
			Socket client = server.accept();

			BufferedReader input_cmd = new BufferedReader(
					new InputStreamReader(System.in));

			BufferedReader input = new BufferedReader(new InputStreamReader(
					client.getInputStream()));

			BufferedWriter output = new BufferedWriter(new OutputStreamWriter(
					client.getOutputStream()));

			System.out.println("Datei von Client empfangen: " + input.read());
			System.out.println("Bitte Text eingeben (Server): ");
			String client_text = input_cmd.readLine();
			System.out.println("Folgender Text wurde eingegeben: "
					+ client_text);
			output.write(client_text);
			System.out.println("Text wurde gesendet");
			// output.flush();
			// input.close();
			// output.close();
		}
	}

	public static void main(String[] argv) {
		try {
			KleinerServer2 server = new KleinerServer2();
		} catch (IOException e) {
			System.out.println(e);
		}
	}
}

Ich vermute das der Fehler irgendwie in dem flush ist. Ich komme zu Beginn vom Client zum Server aber dann nicht mehr zurück. Es soll eine Endlosschleife sein, also es soll immer zwischen den beiden Kommuniziert werden können.
Bei einem einmaligen Chat funktioniert das Programm wen ich die 3 Auskommenteirten Zeilen:

// output.flush();
// input.close();
// output.close();

sichtbar mache. Damit schließe ich aber die Verbindung. Wohin gehört dieses flush eigentlich?
Warum komme ich nicht mehr nach der Servereingabe in den Client zurück?
Vielleicht stimmt da was mit dem Puffer nicht...?

Ich danke euch schon im voraus und Danke dafür das es dieses Forum gibt.

Einen schönen Abend wünsche ich euch noch,
Ethernut
 
Zuletzt bearbeitet von einem Moderator:

Volvagia

Top Contributor
Du musst das output.flush(); am Server einkommentieren.
Ein flush solltest du machen, wenn du sicher stellen willst, dass das, was du im Output schreibst auch tatsächlich gesendet wird.

btw. würde ich dir empfehlen die Outputs vor den Inputs zu erzeugen, da es bei gewissen Streams (z. b. ObjectStreams) zu Deadlocks kommen kann, und die äußeren Streams nicht bei jeden Schleifendurchgang neu zu erzeugen.
 

Ethernut

Mitglied
Lieber Volvagia,

vielen lieben Dank für Deine Antwort :)

Hat funktioniert. Ich hab das flush wieder einkommentiert und nun kann ich hin und her schicken.

btw. würde ich dir empfehlen die Outputs vor den Inputs zu erzeugen, da es bei gewissen Streams (z. b. ObjectStreams) zu Deadlocks kommen kann, und die äußeren Streams nicht bei jeden Schleifendurchgang neu zu erzeugen.

Aber es soll doch ein Chat Programm sein. Wenn ich zuerst einlese von der Tastatur um die Outputs zu erzeigen müssen beide Klassen warten bis der Server seine Daten empfängt um anzuzeigen was er vom Client bekommen hat, oder verstehe ich da was falsch?

Noch was:

Ich verstehe nicht ganz wie ich aus dem Port, in dem Fall "1234" einen String einlesen kann. Bisher bekomme ich immer wenn ich einen String eingebe die äquivalente Integer Zahl des Ersten Buchstabens im String...
Es funktioniert nicht so schön wie bei der CMD...


Danke nochmals!

lg Ethernut
 

Volvagia

Top Contributor
Wenn ich zuerst einlese von der Tastatur um die Outputs zu erzeigen müssen beide Klassen warten bis der Server seine Daten empfängt um anzuzeigen was er vom Client bekommen hat, oder verstehe ich da was falsch?
Sry, das verstehe ich nicht ganz. Klar muss der Server warten dass er die Daten empfängt, bevor er sie anzeigen kann. ^^ Und der Client wartet sowieso bis am Server eine Eingabe/Sendevorgang getätigt wurde.


Ich verstehe nicht ganz wie ich aus dem Port, in dem Fall "1234" einen String einlesen kann. Bisher bekomme ich immer wenn ich einen String eingebe die äquivalente Integer Zahl des Ersten Buchstabens im String...
Es funktioniert nicht so schön wie bei der CMD...
Klar, read liest nur 1 int aus dem Stream. Da gibt es verschiedene Möglichkeiten. Ich denke die einfachste wäre ein BufferedReader/Writer. Der besitzt die Methode readLine. Natürlich musst du dann nach jeder geschriebenen Zeile ein char (nicht String) \n, also einen Zeilenumbruch mitsenden.
Per InputStreamReader und OutputStreamWriter kannst du einen Stream auf einen Reader/Writer portieren.

[EDIT]Sry für den komischen 2. Text, ich hab das Programm testweiße in Eclipse ausgeführt und trotzdem übersehen, dass du bereits BufferedReader nutzt. Oo[/EDIT]
 
Zuletzt bearbeitet:

Ethernut

Mitglied
Lieber Volvagia,

wieder Danke ich Dir für Deine Antwort ;)

Ich hänge immer noch an diesem Integer Problem. Ich benutze für den Port (ServerSocket + Socket) auf beiden Seiten einen BufferedReader.
Ich habs jetzt mit readLine() probiert. Aber das Programm hängt nur noch im Client fest.
Bitte Text eingeben (Client):
A
Folgender Text wurde eingegeben: A
Text wurde gesendet

Und ab da geht nichts mehr.

Client:

Java:
package at.tw.ose;

import java.net.*;
import java.io.*;

public class Client {
	Client() throws IOException {
		while (true) {
			Socket server = new Socket("localhost", 1234);

			BufferedReader input_socket = new BufferedReader(
					new InputStreamReader(server.getInputStream()));

			BufferedReader input = new BufferedReader(new InputStreamReader(
					System.in));

			BufferedWriter output = new BufferedWriter(new OutputStreamWriter(
					server.getOutputStream()));

			System.out.println("Bitte Text eingeben (Client): ");
			String server_text = input.readLine();
			System.out.println("Folgender Text wurde eingegeben: "
					+ server_text);
			output.write(server_text);
			System.out.println("Text wurde gesendet");
			output.flush();
			System.out.println("Text von Server empfangen: "
					+ input_socket.readLine());                    // <= Änderung!!!
			// System.out.println("Text von Server empfangen: "
			// + input_socket.read());
		}
		// }
		// server.close();
		// input.close();
		// output.close();
	}

	public static void main(String[] argv) {
		try {
			Client client = new Client();
		} catch (IOException e) {
			System.out.println(e);
		}
	}
}

Hier habe ich die Zeile System.out.println("Text von Server empfangen: " + input_socket.read());
durch System.out.println("Text von Server empfangen: " + input_socket.readLine());

ausgetauscht.

Server:

Java:
package at.tw.ose;

import java.net.*;
import java.io.*;

public class KleinerServer2 {
	ServerSocket server = new ServerSocket(1234);

	char[] cbuf = new char[1024];

	KleinerServer2() throws IOException {
		while (true) {
			Socket client = server.accept();

			BufferedReader input_cmd = new BufferedReader(
					new InputStreamReader(System.in));

			BufferedReader input = new BufferedReader(new InputStreamReader(
					client.getInputStream()));

			BufferedWriter output = new BufferedWriter(new OutputStreamWriter(
					client.getOutputStream()));

			// System.out.println("Datei von Client empfangen: " +
			// input.read());
			System.out.println("Datei von Client empfangen: "
					+ input.readLine());                               // <= Änderung!!!
			System.out.println("Bitte Text eingeben (Server): ");
			String client_text = input_cmd.readLine();
			System.out.println("Folgender Text wurde eingegeben: "
					+ client_text);
			output.write(client_text);
			System.out.println("Text wurde gesendet");
			output.flush();
			// System.out.println("Datei von Client empfangen: " +
			// input.read());
			// input.close();
			// output.close();
		}
	}

	public static void main(String[] argv) {
		try {
			KleinerServer2 server = new KleinerServer2();
		} catch (IOException e) {
			System.out.println(e);
		}
	}
}

Hier habe ich die Zeile System.out.println("Datei von Client empfangen: " + input.read());
durch System.out.println("Datei von Client empfangen: " + input.readLine());
ausgetauscht.

Ich verstehe nicht warum das bei der CMD geht und beim Port nicht...:bahnhof:

Einen schönen Sonntag noch,
Ethernut
 

Volvagia

Top Contributor
Wie ich sagte, du musst einen Zeilenumbruch mitsenden. readLine liest zwar bis zum Zeilenumbruch, schreibt ihn aber nicht in die Rückgabe. So wartet der Server (und später der Client) darauf, dass ein Zeilenumbruch empfangen wird.

Java:
import java.net.*;
import java.io.*;
 
public class Client {
	private static final char LINE_WRAP_SYMBOL = '\n'; //Änderung: Linux-Zeilenumbruch
	
	Client() throws IOException {
		Socket server = new Socket("localhost", 1234); //Änderung: Verbindung nur 1x, nicht jeden Schleifendurchgang.
    	
		BufferedReader input = new BufferedReader(new InputStreamReader(
                System.in)); //Änderung: Streams vor der Schleife erzeugt und Socket-Output vor Socket-Input.
		
		BufferedWriter output = new BufferedWriter(new OutputStreamWriter(
                server.getOutputStream()));
		BufferedReader input_socket = new BufferedReader(
				new InputStreamReader(server.getInputStream()));
		
		try { //Änderung: Nach dem Durchläufen wird sicherheitshalber versucht alles noch zu schließen. Besser 10x schließen als 1x offen lassen. ^^
			while (!server.isClosed()) { //Änderung: Nur durchlaufen, solange eine Verbindung besteht. Zwar throwt eine Exception beim Leseversuch aus den Konstruktor, aber eine später eingefügte Behandlung wäre so auch schwerer.
				System.out.println("Bitte Text eingeben (Client): ");
				String server_text = input.readLine();

	            System.out.println("Folgender Text wurde eingegeben: "
	                    + server_text);
	            output.write(server_text);
	            output.write(LINE_WRAP_SYMBOL); //Änderung: Sendet einen Zeilenumbruch, damit der arme Server nicht ewig darauf warten muss.
	            
	            System.out.println("Text wurde gesendet");
	            output.flush();
	            
	            System.out.println("Text von Server empfangen: "
	                    + input_socket.readLine());
	        }	
		} finally {
			//input wird nicht geschlossen, da es auch System.in schließen würde und du das nie wieder auf bekommst.			
			closeStreams(input_socket, output);
			closeSocket(server);
		}
    }
	private void closeSocket(Socket socket) {
		if(socket == null) {
			return;
		}
		
		try {
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	private void closeStreams(Closeable... closeables) {
		for(Closeable closeable:closeables) {
			closeStream(closeable);
		}
	}
	private void closeStream(Closeable closeable) {
		try {
			closeable.close();
		} catch(IOException e) {
			e.printStackTrace();
		}
	}
 
    public static void main(String[] argv) {
        try {
            Client client = new Client();
        } catch (IOException e) {
            e.printStackTrace(); //Änderung: Ein System.out zeigt einen nur, dass irgendwo ein Fehler aufgetreten ist. Der StackTrace sagt einen auch wo. Connection refused ist klar, es gibt aber auch Fehler mit weit weniger Aussagen.
        }
    }
}

Java:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
 
public class KleinerServer2 {
	//Änderungen: Fast alle Änderungen wie in Client
	private static final char LINE_WRAP_SYMBOL = '\n';

    ServerSocket server = new ServerSocket(1234);
 
    char[] cbuf = new char[1024];
 
    KleinerServer2() throws IOException {
    	Socket client = server.accept();
    	
    	BufferedReader input_cmd = new BufferedReader(
                new InputStreamReader(System.in));
    	
    	BufferedWriter output = new BufferedWriter(new OutputStreamWriter(
                client.getOutputStream()));
    	
    	BufferedReader input = new BufferedReader(new InputStreamReader(
                client.getInputStream()));
    	
    	try {
    		while (!client.isClosed()) {
                System.out.println("Datei von Client empfangen: "
                       + input.readLine());
                
               System.out.println("Bitte Text eingeben (Server): ");
               String client_text = input_cmd.readLine();
               
               System.out.println("Folgender Text wurde eingegeben: " + client_text);
               
               output.write(client_text);
               output.write(LINE_WRAP_SYMBOL);
               
               System.out.println("Text wurde gesendet");
               output.flush();
           }
    	} finally {
    		closeStreams(input, output);
    		closeSocket(client);
    	}
    }
	private void closeSocket(Socket socket) {
		if(socket == null) {
			return;
		}
		
		try {
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	private void closeStreams(Closeable... closeables) {
		for(Closeable closeable:closeables) {
			closeStream(closeable);
		}
	}
	private void closeStream(Closeable closeable) {
		try {
			closeable.close();
		} catch(IOException e) {
			e.printStackTrace();
		}
	}
 
    public static void main(String[] argv) {
        try {
            KleinerServer2 server = new KleinerServer2();
        } catch (IOException e) {
        	e.printStackTrace();
        }
    }
}

[EDIT]Vergessen den Socket noch mal extra schließen. :shock: Ist nun gefixt.[/EDIT]
 
Zuletzt bearbeitet:

Ethernut

Mitglied
Lieber Volvagia,

vielen lieben Dank für Deine Hilfe, Du kennst Dich sehr gut aus.
Ich wünsch Dir noch einen schönen Abend. Danke :toll:

lg Ethernut
 

Ethernut

Mitglied
Ich habe nun versucht daraus zwei GUIs zu machen.
Es gibt aber ein Problem mit der Portnummer. In dem JDialog gebe ich für beide GUIs (Client + Server) die Portnummer "1234" ein. Nachdem ich die Nummer für den Server eingebe und danach die Nummer für den Client loggen sich beide an diesem Port an.
Aber nun funktioniert das Programm an der Stelle nicht an dem ich aus dem Textfeld einen String lese.

Ich hab hier den Code nur für den Client hochgeladen:

Client_GUI:

Java:
package at.tw.ose;

import java.awt.Component;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

	private JFrame frmClient;
	private JTextField textField;
	private Client app = this;

	final JButton btnConnection = new JButton("Connect");

	private final static String newline = "\n";

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Client window = new Client();
					window.frmClient.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public Client() {
		try {
			initialize();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		// function();
	}

	/**
	 * Initialize the contents of the frame.
	 * 
	 * @throws IOException
	 */
	private void initialize() throws IOException {
		frmClient = new JFrame();
		frmClient.setTitle("Client");
		frmClient.setBounds(100, 100, 450, 323);
		frmClient.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmClient.getContentPane().setLayout(null);

		// JButton btnConnection = new JButton("Connect");
		btnConnection.setBounds(343, 201, 89, 23);
		frmClient.getContentPane().add(btnConnection);

		textField = new JTextField();
		textField.setBounds(10, 202, 224, 20);
		frmClient.getContentPane().add(textField);
		textField.setColumns(10);

		final JTextArea receiveArea = new JTextArea();
		receiveArea.setBounds(10, 29, 422, 69);
		frmClient.getContentPane().add(receiveArea);

		final JTextArea transmitArea = new JTextArea();
		transmitArea.setBounds(10, 121, 422, 69);
		frmClient.getContentPane().add(transmitArea);

		JLabel lblTransmit = new JLabel("Transmited");
		lblTransmit.setBounds(10, 109, 111, 14);
		frmClient.getContentPane().add(lblTransmit);

		JLabel lblReceive = new JLabel("Received");
		lblReceive.setBounds(10, 11, 78, 14);
		frmClient.getContentPane().add(lblReceive);

		JMenuBar menuBar = new JMenuBar();
		frmClient.setJMenuBar(menuBar);

		JMenu mnFile = new JMenu("File");
		menuBar.add(mnFile);

		JMenuItem mntmConfiguration = new JMenuItem("Configuration");
		mntmConfiguration.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				new ClientDialog().setVisible(true);
			}
		});
		mnFile.add(mntmConfiguration);

		// ! Erzeugung eines eigenen Klients==============

		final Client_Class my_client = new Client_Class();

		// ===============================================

		JButton btnNewButton = new JButton("Send");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String inputText = textField.getText();
				String get_string;
				// System.out.println("Einagbe: " + inputText);
				transmitArea.append(inputText + newline);
				try {
					my_client.sendstringtoserver(inputText);
					String receive;
					receive = my_client.getstringfromserver();
					receiveArea.append(receive + newline);
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				textField.setText("");
			}
		});
		btnNewButton.setBounds(244, 201, 89, 23);
		frmClient.getContentPane().add(btnNewButton);

		JButton btnSchlieen = new JButton("Schlie\u00DFen");
		btnSchlieen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (JOptionPane.showConfirmDialog(app.getFrame(),
						"Do you want to exit?", null, JOptionPane.YES_NO_OPTION) == 0) {
					System.exit(0);
				}
			}
		});
		btnSchlieen.setBounds(321, 234, 111, 23);
		frmClient.getContentPane().add(btnSchlieen);

		btnConnection.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println("Connectbuton ist dran");
			}
		});

	}

	protected Component getFrame() {
		// TODO Auto-generated method stub
		return null;
	}
}

Cliebt_Class:

Java:
package at.tw.ose;

import java.net.*;
import java.io.*;

public class Client_Class {
	
	private static final char LINE_WRAP_SYMBOL = '\n';

	private Socket server;
	
	private BufferedReader input_socket;
	private BufferedReader input;
	private BufferedWriter output;

	public void initWithPortNumber(int host) throws UnknownHostException, IOException{
//		Socket get_server_port = new Socket("localhost", host);
//		server = get_server_port;
		
		server = new Socket("localhost", host);
		
		input_socket = new BufferedReader(new InputStreamReader(
				server.getInputStream()));

		input = new BufferedReader(new InputStreamReader(System.in));

		output = new BufferedWriter(new OutputStreamWriter(
				server.getOutputStream()));
	}

	Client_Class() throws IOException {

	}

	public String sendstringtoserver(String input_from_GUI) throws IOException {
		String server_text = input_from_GUI;
		String get_string;

		output.write(server_text);                  //!!! Problem, kann nicht auf diesen Port schreiben
		output.write(LINE_WRAP_SYMBOL);
		output.flush();
		get_string = input_socket.readLine();
		return get_string;
	}
	
	public String getstringfromserver() throws IOException {
		String get_string;
		get_string = input_socket.readLine();
		return get_string;
	}
}

Ich versteh das nicht so richtig. Beide loggen sich ein aber ich kann nichts senden. Ich wollte nicht so viele Codes hochladen damit ich euch nicht überrenne. Sieht vielleicht schon irgendwer den Fehler?

Ich hoffe auf Hilfe und Danke euch schon im voraus, bin echt am verzweifeln und versuche schon so viel ich kann...

Ethernut


PS:

Die Veränderungen von Dir lieber Volvagia werde ich noch aktualisieren ;)
 

Volvagia

Top Contributor
Wird vermutlich eine NPE sein, du rufst ja nirgends
Code:
initWithPortNumber
der Clienten-Instanz auf.
 

Ethernut

Mitglied
Ja Du hast Recht. Es ist eine NPE.

Ich hatte vergessen den JDialog anzuhängen, hier die GUI dazu:

Java:
package at.tw.ose;

import java.awt.BorderLayout;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.util.Scanner;

public class ClientDialog extends JDialog {

	private final JPanel contentPanel = new JPanel();
	private JTextField textClientEingabePort;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		try {
			ClientDialog dialog = new ClientDialog();
			dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
			dialog.setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Create the dialog.
	 */
	public ClientDialog() {
		setTitle("Client Configuration");
		setBounds(180, 180, 294, 140);
		getContentPane().setLayout(new BorderLayout());
		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(contentPanel, BorderLayout.CENTER);
		contentPanel.setLayout(null);
		
		JLabel lblBittePortnummerEingeben = new JLabel("Bitte Portnummer eingeben: ");
		lblBittePortnummerEingeben.setBounds(10, 22, 175, 14);
		contentPanel.add(lblBittePortnummerEingeben);
		
		textClientEingabePort = new JTextField();
		textClientEingabePort.setBounds(190, 19, 86, 20);
		contentPanel.add(textClientEingabePort);
		textClientEingabePort.setColumns(10);
		{
			JPanel buttonPane = new JPanel();
			buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
			getContentPane().add(buttonPane, BorderLayout.SOUTH);
			{
				JButton okButton = new JButton("OK");
				okButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						String inputText = textClientEingabePort.getText();
						Scanner scanner = new Scanner(inputText);
						int inputvalue = scanner.nextInt();
						try {
							Client_Class value = new Client_Class();
							value.initWithPortNumber(inputvalue); // Aufruf der initWithPortNumber mit der eingegeben Portnumber
						} catch (IOException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
					}
				});
				okButton.setActionCommand("OK");
				buttonPane.add(okButton);
				getRootPane().setDefaultButton(okButton);
			}
			{
				JButton cancelButton = new JButton("Cancel");
				cancelButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						System.exit(0);
					}
				});
				cancelButton.setActionCommand("Cancel");
				buttonPane.add(cancelButton);
			}
		}
	}
}

Ich rufe die Funktion von dem JDialog auf...aber ich habe trotzdem diese NPE??? :L
 

Ethernut

Mitglied
Kann es sein, dass es deshalb nicht geht weil es zwei verschiedene Objekte ("my_client" in der Client_GUI: und "value" in der JDialog Datei) sind...?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
K Verständnisproblem bei Server/Client Java Basics - Anfänger-Themen 3
A Server - Client Nachrichtenaustausch über Eventbus Java Basics - Anfänger-Themen 12
D Verbesserungsvorschläge zur Struktur einer Client Server Desktop Chat App Java Basics - Anfänger-Themen 24
D Unerwartetes Verhalten bei Client Server Chat App Java Basics - Anfänger-Themen 12
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
K Verständnisfrage Server/Client BufferedReader, PrintWriter Java Basics - Anfänger-Themen 2
A Client-Server Kommunikation Java Basics - Anfänger-Themen 3
S Server - für jeden Client ein Serverthread Java Basics - Anfänger-Themen 2
L Erste Schritte Erste Versuche mit Server und Client Java Basics - Anfänger-Themen 7
elischa Client-Server IO und Stream Steuerung ? Java Basics - Anfänger-Themen 2
I Print Client -> Server -> Client? Java Basics - Anfänger-Themen 1
I lokales Programm mit Client/Server Programm kommunizieren Java Basics - Anfänger-Themen 3
J TCP MultiThreaded Server und Client - irgendwo ist der Fehler, aber ich find ihn nicht Java Basics - Anfänger-Themen 3
K Java Client > Python Server Java Basics - Anfänger-Themen 0
S Java - Client/Server mit Stomp kurze Frage Java Basics - Anfänger-Themen 0
H Einfache Client/Server-Kommunikation Java Basics - Anfänger-Themen 16
O Server Client Problem Java Basics - Anfänger-Themen 2
H Java Server/Client, HTML Seite anzeigen Java Basics - Anfänger-Themen 2
L Server pingt Client und fordert Info Java Basics - Anfänger-Themen 2
R Server/Client für Spiel Java Basics - Anfänger-Themen 2
X Applet - Client/Server Java Basics - Anfänger-Themen 2
L Bild versenden über Client/Server Java Basics - Anfänger-Themen 10
S Klassen Server und Client Java Basics - Anfänger-Themen 3
M Client - DB-Server Struktur Java Basics - Anfänger-Themen 7
U Probleme mit Server-Client implementierung Java Basics - Anfänger-Themen 5
G Server-Client Kommunikation Java Basics - Anfänger-Themen 3
Z Tomcat Server Kommunikation zu Client Applet Java Basics - Anfänger-Themen 5
B Server-Client mit Thread ausstatten Java Basics - Anfänger-Themen 3
D Client-Server Problem Java Basics - Anfänger-Themen 2
J Netzwerkrprogammierung Client - Server Java Basics - Anfänger-Themen 3
J Netzwerkprogrammierung Client/Server Java Basics - Anfänger-Themen 16
G ArrayListe vom Server nach Client schicken Java Basics - Anfänger-Themen 17
G JMS -> Wie Anmeldung vom Client an Server? Java Basics - Anfänger-Themen 4
I Server / Client Programm wie einen String übergeben? Java Basics - Anfänger-Themen 6
B Client - Server Verbindung über sockets mysql DB ansprechen? Java Basics - Anfänger-Themen 6
G Java Server Client Programmierung Java Basics - Anfänger-Themen 3
B Bild/Datei von einem Server an einen Client senden Java Basics - Anfänger-Themen 6
D Server/Client Java Basics - Anfänger-Themen 8
H Server Client, es kommt nichts an. Java Basics - Anfänger-Themen 5
G [Hilfe] Fileupload: Client-Server Java Basics - Anfänger-Themen 9
S Server/Client Verbindung Java Basics - Anfänger-Themen 2
G Dateidownload Client-Server (jsp) Java Basics - Anfänger-Themen 4
G Zugriff vom 'Server auf Client' Java Basics - Anfänger-Themen 4
S Client-Server Java Basics - Anfänger-Themen 18
X client soll bat auf server ansprechen Java Basics - Anfänger-Themen 7
C client/server programm fehler ! Java Basics - Anfänger-Themen 20
C string über server/client verbindung senden ? Java Basics - Anfänger-Themen 4
K [servcer/Client] Suche Server /Client Tutorial. Java Basics - Anfänger-Themen 2
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
S Java Client-je nach Heap Size Größe startet Applikation oder nicht Java Basics - Anfänger-Themen 4
I Client ObjectInputStream error... Java Basics - Anfänger-Themen 5
W Client verbindet sich nicht Java Basics - Anfänger-Themen 14
B Email Client in der eigenen Software einbauen Java Basics - Anfänger-Themen 3
E SocketServer/Client stürzt ab. Address already in use. Java Basics - Anfänger-Themen 2
I Wann ist Client plattformunabhängig? Java Basics - Anfänger-Themen 22
E MCLauncher eigener Client workt nicht? Java Basics - Anfänger-Themen 4
I Unique client information in WebApp Java Basics - Anfänger-Themen 3
Joew0815 Error org.apache.xmlrpc.client.XmlRpcClientConfigImpl.setUserAgent Java Basics - Anfänger-Themen 2
N Was bedeutet "Implementierung vor dem Client verbergen" bei Design Patterns? Java Basics - Anfänger-Themen 2
O Verriegeln, aber wo? Finde den Client der zu schließem ist. Java Basics - Anfänger-Themen 0
T Buffererwriter keine Exception obwohl Client weg Java Basics - Anfänger-Themen 2
N Client soll mehrere Antworten von Servern gleichzeitig empfangen Java Basics - Anfänger-Themen 8
T Client-Fenster bei Aufruf unvollständig Java Basics - Anfänger-Themen 12
E Senden von Objects an Client. Variablenwerte kommen nicht an Java Basics - Anfänger-Themen 5
E Client hilfe!!! Java Basics - Anfänger-Themen 7
B RMI - Fehlermeldung auf dem Client Java Basics - Anfänger-Themen 6
E Client ergibt NULL? Java Basics - Anfänger-Themen 24
E Socket (Client) dauerhaft aktiv? Java Basics - Anfänger-Themen 9
E HTTP Client - Login durchführen? Java Basics - Anfänger-Themen 4
L Ip-Adresse für Client Java Basics - Anfänger-Themen 14
L Wegwerf Client Java Basics - Anfänger-Themen 26
L Client aktualisieren Java Basics - Anfänger-Themen 6
J DNS-Client Java Basics - Anfänger-Themen 2
J Simpler DNS Client Java Basics - Anfänger-Themen 20
M Flexiblen Client programmieren Java Basics - Anfänger-Themen 2
S Webservice: Dateien downloaden vom Webserver auf den Client Java Basics - Anfänger-Themen 7
G Ausg. in JSP erzeugen die als Antwort an Client gesch. wird Java Basics - Anfänger-Themen 2
K Client-Liste im Chat Java Basics - Anfänger-Themen 2
A Problem mit Ausgabe einer Liste über einen Client Java Basics - Anfänger-Themen 5
rambozola zugriff auf client bei j2ee anwendung Java Basics - Anfänger-Themen 10
G Mail Client öffnen Java Basics - Anfänger-Themen 9
T Datei über UDP verschicken . Speicherprobleme am Client Java Basics - Anfänger-Themen 4
R client-applikation? Java Basics - Anfänger-Themen 5
S smtp-Client programmieren Java Basics - Anfänger-Themen 9
F Wie kommen die Applets zum Client? Java Basics - Anfänger-Themen 7
T Client-Authentifizierung Java Basics - Anfänger-Themen 6
G http client Java Basics - Anfänger-Themen 4
FireHorses Benutzernamen aus PrivateChannel(Interaction) auf Server bringen Java Basics - Anfänger-Themen 0
HolyFUT Best Practice Architektur WebSocket Server Java Basics - Anfänger-Themen 1
S Server Java Basics - Anfänger-Themen 4
S Server Java Basics - Anfänger-Themen 3
M CS GO Server mit Java steuern Java Basics - Anfänger-Themen 3
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
B DHCP-Server Adresse ermitteln Java Basics - Anfänger-Themen 4
F Mehrere Server Sockets in einer Anwendung Java Basics - Anfänger-Themen 9
R Antwort vom Server an mehreren Clients senden Java Basics - Anfänger-Themen 3
W Netwerkprogrammierung und Http Server Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben