# problem mit thread bzw. netzwerkverbindung!



## Fuxi (11. Jun 2005)

Wenn man das Programm startet wird der thread ConnectionThread erstellt. Nun wird das erste mal ein fenster geöffnet. Dieses beiinhaltet einen Button. Wenn man auf diesen button klickt soll dass fenster geschlossen werden und der server gestartet werden.

Nur mein problem ist folgendes:
Wenn ich auf den button klicke und dass fenster geschlossen wird, wird kein server erstellt.... ?


```
//Diese Klasse startet das eigentliche Spiel
public class StartGame {

	private ConnectionThread myConnection;

	public StartGame() {
		myConnection = new ConnectionThread();
		myConnection.start(); //Thread wird gestartet
	}

	public static void main(String[] args) {

		StartGame spielStarten = new StartGame();
	}
}
```



```
//Diese Klasse stellt Netzwerkverbindung her.
//Es soll erst ein Fenster geöffnet werden in dem abgefragt wird ob Server oder Client
//Doch für den Anfang soll ein Server genügen.
import java.io.*;
import java.net.*;

public class ConnectionThread extends Thread {

	public StartGame linkGame;
	public ConnectionFenster linkConnectionFenster;

	private ServerSocket myServerSocket = null;
	private Socket myClientSocket = null;
	private PrintWriter out = null;
	private BufferedReader in = null;

	public void run() {
		while (true) {
			//Diese endlosschleife soll später dazu dienen 
			//irgendwlche kommandos zu empfangen
		}
	}

	//Konstruktor
	public ConnectionThread() {
		//Fenster zum Server starten wird geöffnet
		linkConnectionFenster = new ConnectionFenster();

		//Wenn Variable isServer in Klasse ConnectionFenster == true - > Server starten
		if (linkConnectionFenster.isServer() == true) {

			try {
				myServerSocket = new ServerSocket(3550);
				System.out.println("warten auf client");

				myClientSocket = myServerSocket.accept();

				System.out.println("client gefunden");

				out = new PrintWriter(myClientSocket.getOutputStream(), true);
				in =
					new BufferedReader(
						new InputStreamReader(myClientSocket.getInputStream()));
			}
			catch (IOException e) {}
		}
		else {
			System.out.println("P R O B L E M ! ! !");
		}
	}

} //Ende der Klasse
```



```
//Fenster in dem Später Server ausgewählt wird oder Client.
//Als Client muss man dann die IP und den Port eingeben.
//Doch für den Anfang soll man nur auf den Button Server klicken und der Server wird gestarte.
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class ConnectionFenster extends JFrame implements ActionListener {
private JPanel jContentPane = null;

	boolean isServer;
	private JPanel jPanel = null;
	private JButton buttonServer = null;

	//Konstruktor
	public ConnectionFenster() {
		setSize(300, 200);
		setContentPane(getJContentPane());
		setVisible(true);
	}

	//ContentPane
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getJPanel(), BorderLayout.CENTER);
		}
		return jContentPane;
	}

	//Panel
	private JPanel getJPanel() {
		if (jPanel == null) {
			jPanel = new JPanel();
			jPanel.setLayout(null);
			jPanel.add(getButtonServer(), null);
		}
		return jPanel;
	}

	//Button um Server zu starten und Fenster wieder schließen
	private JButton getButtonServer() {
		if (buttonServer == null) {
			buttonServer = new JButton();
			buttonServer.setBounds(22, 19, 112, 24);
			buttonServer.setText("Server");
			buttonServer.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					System.out.println("actionPerformed()");
					isServer = true;
					setVisible(false);
				}
			});
		}
		return buttonServer;
	}

	public boolean isServer() {
		return isServer;
	}

	public void actionPerformed(ActionEvent arg0) {	
	}


	
}
```


----------



## Fuxi (11. Jun 2005)

kann mir denn keiner helfen? wäre wichtig, da ich dies für ein projekt für die schule benötige.
danke


----------



## Bleiglanz (12. Jun 2005)

setVisible blockt nicht, dein Prog läuft einfach weiiter...

nimm lieber einen JDialog oder sowas


----------



## Fuxi (12. Jun 2005)

aus der Klasse ConnectionFenster welche aus JFrame abgeleitet ist in einen JDialog umändern? ok werd ich ma machen und schauen.
aber was meinst du damit: 





> setVisible blockt nicht, dein Prog läuft einfach weiiter...


----------

