Server Client Problem

tameck

Erfahrenes Mitglied
hey

ich hab en einfaches server client prog geschrieben was mir einfach ne zahl mal zwi rechnen soll ... dazu hab ich ne gui geschrieben in der ich die zahl eingeben kann diese wird dann an den server gesendet der die zahl verdoppelt zurückschickt soweit funktioniert alles nur wenn ich eine neue zahl eingeben will bekomme ich folgende fehlermeldungen

Der Server bringt diese Meldung:

java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at serverclient.Server.main(Server.java:28)

Der Client bringt diese Meldung:

java.net.SocketException: Connection reset


Server Quelltext:

Code:
package serverclient;

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

public class Server {
	
	public static void main(String[] argv)
	{
		try
		{
			ServerSocket ss = new ServerSocket(333);
			System.out.println("Server: Warte auf Anfrage");
			Socket sa = ss.accept();
			System.out.println("Server: Anfrage erhalten");
			
			BufferedReader in = new BufferedReader(new InputStreamReader(sa.getInputStream()));
			PrintWriter out = new PrintWriter(sa.getOutputStream(), true);
			System.out.println("Server: Streams zum Client geoeffnet");
			System.out.println("Server: Rechenprogramm bereit");
			
			int zahl;
			String asd;
			do
			{
				String s = in.readLine();
				System.out.println("Server: Zahl erhalten");
				zahl = Integer.parseInt(s);
				zahl = zahl * 2;
				asd = ""+zahl;
				out.println(asd);
			}while(zahl != 0);
			sa.close();
		}
		catch(IOException e) { System.err.println(e.toString());System.exit(1);}
	}

}

Client Quelltext

Code:
package serverclient;

import java.net.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import javax.swing.*;

public class Client extends JFrame implements ActionListener {
	
	JLabel label1 = new JLabel("Bitte Zahl eingeben");
	JTextField tf1 = new JTextField(10);
	JButton button1 = new JButton("Rechne");
	JButton button2 = new JButton("Clear");
	JLabel label2 = new JLabel("Das ergebnis ist: ");
	JLabel label3 = new JLabel();
	JPanel panel0 = new JPanel();
	JPanel panel1 = new JPanel();
	JPanel panel2 = new JPanel();
	JPanel panel3 = new JPanel();
	
	public static String eingabe;
	public static String ausgabe;
	
	public Client(String title){
		
		super(title);
		
		Container c = getContentPane();
		
		panel1.setLayout(new GridLayout(2,2));
		panel1.add(label1);
		panel1.add(tf1);
		panel2.setLayout(new GridLayout(1,2));
		panel2.add(button1);
		panel2.add(button2);
		panel3.setLayout(new GridLayout(1,2));
		panel3.add(label2);
		panel3.add(label3);
		panel0.setLayout(new GridLayout(3,1));
		panel0.add(panel1);
		panel0.add(panel2);
		panel0.add(panel3);
		
		c.add(panel0);
		
		button1.addActionListener(this);
		button2.addActionListener(this);
		
		addWindowListener (new WindowAdapter()
				{
					public void windowClosing(WindowEvent e)
					{
						System.exit(0);
					}
				});
				
				setTitle (title);
				setSize(250,250);
				setVisible(true);
		
	}
	public void actionPerformed(ActionEvent e){
		
			String serverRechner = "127.0.0.1";
			try
			{
				Socket s = new Socket (serverRechner,333);
				BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
				PrintWriter out = new PrintWriter(s.getOutputStream(),true);
				System.out.println(serverRechner);
				System.out.println("Client: Streams zum Server geoffnet");
				
				if(button1==e.getSource()){
						
						eingabe = tf1.getText();
					
					System.out.print("Client: Bitte Zahl eingeben: ");
					System.out.println(eingabe);
									
					int zahl = Integer.parseInt(eingabe);
					out.println(zahl);
				
					String ergebnis = in.readLine();
					System.out.println("Client: Ergebnis ist " + ergebnis);
					label3.setText(ergebnis);
					}
				if(button2==e.getSource()){
					
					tf1.setText("");
					label3.setText("");
				}
				
				}catch (IOException e1 ){
					System.err.println(e1.toString());
					System.exit(1);
				}	 
	}
	
	public static void main(String[] argv)throws Exception
	
	{
		new Client("Rechner");
	}
}

wär super wenn ihr mir helfen könnt danke :-)
 
Hallo,

hast du schon mal überprüft, ob der String der eingelesen wird null ist?

Du wird eine NullPointerException geworfen. Das sagt aus, dass irgendwas in der Zeile - die auch angegeben wird - null ist.

Die andere Exception wird geworfen, weil sich der Server aufgrund der Exception beendet.

MFG

zEriX
 
Vielleicht solltest du mal solange lesen, bis der String nicht mehr null ist. Also mit einer Schleifen.

MFG

zEriX
 
Also ich habe dein Programm mal getestet. Bei mir läuft das Programm ohne Probleme durch.

MFG

zEriX
 
Hast du dir den String denn auch ausgeben lassen? Ist der wirklich null?(Naja muss ja, sonst wär das Problem ja nicht mehr^^)
Wo genau geht der denn verloren?
 
bei mir läufts auch aber wenn ich ne neue zahl ausrechenen lassen will hängt sichs applet auf und beendet sich ...
 
Zurück