D
DragonBeta
Gast
Mahlzeit !
Mein Problem:
Bei meinem MatheTrainer Programm schliesst sich mein Server automatisch sobald ich den Client beende !
Soll er aba nich! Wieso macht er das ?
Kann mir jemand helfen ?
QUELLCODE SERVER :
QUELLCODE CLIENT
Mein Problem:
Bei meinem MatheTrainer Programm schliesst sich mein Server automatisch sobald ich den Client beende !
Soll er aba nich! Wieso macht er das ?
Kann mir jemand helfen ?
QUELLCODE SERVER :
Code:
import java.io.*;
import java.net.*;
public class MatheRechnerServer
{
private static int zahl1;
private static int zahl2;
public static void main(String args[]) throws IOException
{
ServerSocket meinServer = new ServerSocket(1234);
System.out.println("Der Mathe Trainer SERVER wurde gestartet");
Socket clientSocket = meinServer.accept();
BufferedReader vomClientLesen = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintStream zumClientSenden = new PrintStream(clientSocket.getOutputStream());
boolean zahl = false;
int ergebnis = 0;
int ergebnisClient = 0;
int versuche = 4;
while(true)
{
if(zahl == false)
{
zahl1 = (int)(Math.random()*10);
zahl2 = (int)(Math.random()*10);
ergebnis = zahl1 + zahl2;
zumClientSenden.println(zahl1);
zumClientSenden.println(zahl2);
zahl = true;
}
ergebnisClient = Integer.parseInt(vomClientLesen.readLine());
System.out.println(ergebnisClient);
if(ergebnisClient != ergebnis)
{
versuche--;
zumClientSenden.println("Das war falsch." + "Sie haben noch " + versuche +" Versuche");
zumClientSenden.println(zahl1);
zumClientSenden.println(zahl2);
if (versuche == 0)
{
zumClientSenden.println("Alle Versuche verbraucht. Das Ergebnis lautet " + ergebnis);
versuche = 4;
zahl = false;
}
}
else
{
zumClientSenden.println("Das war richtig");
versuche = 4;
zahl = false;
}
}
}
}
QUELLCODE CLIENT
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
/**
*
* Beschreibung
*
* @version 1.0 vom 09.02.2007
* @author
*/
public class RechnerClientGUI extends JFrame
{
// Anfang Variablen
private JTextField Zahl1TextField = new JTextField();
private JTextField Zahl2TextField = new JTextField();
private JLabel Zahl1Label = new JLabel();
private JLabel Zahl2Label = new JLabel();
private JLabel TextLabel = new JLabel();
private JButton sendenButton = new JButton();
private JTextField ergebnisEingabeTextField = new JTextField();
private static BufferedReader vomServerLesen;
private static PrintStream zumServerSenden;
// Ende Variablen
public RechnerClientGUI(String title)
{
// Frame-Initialisierung
super(title);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt) { System.exit(0); }
});
int frameWidth = 379;
int frameHeight = 256;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2 ;
setLocation(x, y);
Container cp = getContentPane();
cp.setLayout(null);
// Anfang Komponenten
try
{
Socket serverSocket = new Socket("localhost" , 1234);
vomServerLesen = new BufferedReader(new InputStreamReader(serverSocket.getInputStream()));
zumServerSenden = new PrintStream(serverSocket.getOutputStream());
}
catch(Exception e)
{
System.out.println("No Connection to Server");
}
Zahl1TextField.setBounds(176, 8, 145, 32);
Zahl1TextField.setText("");
Zahl1TextField.setEditable(false);
cp.add(Zahl1TextField);
Zahl2TextField.setBounds(176, 56, 145, 32);
Zahl2TextField.setText("");
Zahl2TextField.setEditable(false);
cp.add(Zahl2TextField);
Zahl1Label.setBounds(56, 8, 114, 32);
Zahl1Label.setText("Zahl 1 :");
cp.add(Zahl1Label);
Zahl2Label.setBounds(56, 56, 114, 32);
Zahl2Label.setText("Zahl 2 :");
cp.add(Zahl2Label);
TextLabel.setBounds(48, 104, 274, 32);
TextLabel.setText("Ergebnis der Addition : ");
cp.add(TextLabel);
sendenButton.setBounds(80, 176, 209, 41);
sendenButton.setText("Senden");
cp.add(sendenButton);
sendenButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
sendenButtonActionPerformed(evt);
}
});
ergebnisEingabeTextField.setBounds(45, 144, 300, 24);
ergebnisEingabeTextField.setText("");
cp.add(ergebnisEingabeTextField);
// Ende Komponenten
setResizable(false);
setVisible(true);
}
// Anfang Ereignisprozeduren
public void sendenButtonActionPerformed(ActionEvent evt)
{
zumServerSenden.println(ergebnisEingabeTextField.getText());
}
// Ende Ereignisprozeduren
public static void main(String[] args)
{
RechnerClientGUI meinRechner = new RechnerClientGUI("Mathe Tester");
meinRechner.serverWarten();
}
private void serverWarten()
{
while(true)
{
try
{
Zahl1TextField.setText(vomServerLesen.readLine());
Zahl2TextField.setText(vomServerLesen.readLine());
ergebnisEingabeTextField.setText(vomServerLesen.readLine());
}
catch (IOException e)
{
System.out.println("Fehler beim Einlesen");
}
}
}
}