# TCP Server / Client Socketexception bei Stringübergabe



## Marcello (13. Mai 2007)

Hi,

bin gerade am verzweifeln: Es soll eine Zahl eingelesen werden im Client, an den Server geschickt und verändert zurückgesendet werden. Nur leider scheint was mit dem umwandeln nicht zu klappen, ich verstehe nur nicht was.

Hier der Code:

Client:


```
public class Client
{
	public static void main(String[] args) throws UnknownHostException, IOException
	{
		Socket socket = new Socket("localhost", 1234);
		BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
		BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		out.write(Integer.toString(In.getInt("Bitte Zahl eingeben: ")));
		out.newLine();
		out.flush();	
		String text = in.readLine();
		System.out.println(text);
	}
}
```

Server:


```
public class Server
{
	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException
	{
		/* Variablen festlegen */
		char[] zeichen = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 
											'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
		Zufall zufall = new Zufall();
		ServerSocket server = new ServerSocket(1234);
		Socket socket = server.accept();
		BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
		int zufallszahl = zufall.liefereZahl(1, 20);
		
		String text = in.readLine();
		int zahl = Integer.parseInt(text);
		zahl += 1;
	  StringBuffer zeichenkette = null;
		for (int i = 0; i < zufallszahl; i++)
		{
			zeichenkette.append(zeichen[zufall.liefereZahl(0, 45)]);
		}
		zeichenkette.append(" ");
		zeichenkette.append(Integer.toString(zahl));
		out.write(zeichenkette.toString());
		out.newLine();
		out.flush();
		out.close();
		in.close();
		server.close();
	}
}
```

Der Fehler tritte beim lesen des Clients aus dem Stream aus - also in der Zeile String text = in.readLine();

Und ich verstehe mal wieder überhaupt nicht wieso. Bin der Meinung alles in Strings konvertiert zu haben, was nötig gewesen wäre.

Bin für jede Hilfe dankbar,

Marcel


----------



## kleiner_held (13. Mai 2007)

Was für ein Fehler kommt denn?
Ansosten:
1. Wer oder was ist In.getInt("Bitte Zahl eingeben: ") auf Zeile 10 in deinem Client?
2. Dein StringBuffer zeichenkette wird nie initialisiert -> NullPointerException?


----------



## Marcello (13. Mai 2007)

Also zu 1.: Ist einfach ne Eingabeklasse, die Fehleingabe abwenden soll und vorher kontrolliert, ob ein int eingegeben wird.
zu 2: Hab ich geändert, danke. Lag aber nicht daran, der Fehler ist der gleiche:

SocketException in der besagten Zeile String text = in.readLine();



Exception in thread "main" java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(SocketInputStream.java:168)
	at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
	at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
	at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
	at java.io.InputStreamReader.read(InputStreamReader.java:167)
	at java.io.BufferedReader.fill(BufferedReader.java:136)
	at java.io.BufferedReader.readLine(BufferedReader.java:299)
	at java.io.BufferedReader.readLine(BufferedReader.java:362)
	at Client.main(Client.java:19)


----------



## kleiner_held (13. Mai 2007)

Marcello hat gesagt.:
			
		

> zu 2: Hab ich geändert, danke. Lag aber nicht daran, der Fehler ist der gleiche:


Dann schau dir doch mal die Ausgabe vom Server an - eventuell gibts da noch einen andern Fehler, der den Server zum Absturz bringt.


----------

