# Socket Error: java.lang.NullPointerException



## Deltaforce (25. Mai 2014)

Hi, ich hab ein problem in einem java programm.
Immer wenn ich an den socketserver vom client datenpakete sende, kommt bei mir die fehlermeldung "java.lang.NullPointerException" in der Console. die Pakete werden trotzdem noch mit print angezeigt, aber danach bricht das Programm einfach ab.

Code Server (lm_main):


```
public class lm_main {

	public static void main(String args[]){
		 System.out.println("Programm gestartet");
		lm_socket.recive();
 		System.out.println(lm_socket.motor1 + lm_socket.motor2 + lm_socket.motor1speed +    lm_socket.motor2speed + lm_socket.motor1bw + lm_socket.motor2bw);
	}
	
}
```

Code Server (lm_socket):


```
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class lm_socket {

	public static String packages;
	public static String motor1;
	public static String motor2;
	public static String motor1speed;
	public static String motor2speed;
	public static String motor1bw;
	public static String motor2bw;

	public static boolean read = true;

	public static void recive(){
		try{

				ServerSocket server = new ServerSocket(8000);
				System.out.println("Server Gestartet auf Port 8000");
				Socket s = server.accept();
				BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
				System.out.println("Verbindung hergestellt");
				while (read == true){
					try {
						Thread.sleep(1000);
					} catch (InterruptedException ex) {
					}
					System.out.println("loop");
					String text = in.readLine();	
					packages = text;
					
						if (packages.contains(" ")){
							Scanner scan = new Scanner(packages);
							motor1 = scan.next();
							motor2 = scan.next();
							motor1speed = scan.next();
							motor2speed = scan.next();
							motor1bw = scan.next();
							motor2bw = scan.next();
							
						}else{

						}
					}
				
				in.close();
				server.close();
		}catch(Exception e){
			System.out.println(e);
		}
	}
}
```

Code Client (bisher nur zum test):


```
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.net.Socket;

public class main {

	public static void main(String args[]){
		try{

		Socket s = new Socket("localhost",8000);
		BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
		out.write("test test2 test3 test4 test5 test6");
		out.newLine();
		out.flush();
		}catch(Exception e){
			System.out.println(e);
		}
	}
		
	
}
```

Ausgabe der Console:


```
Programm gestartet
Server Gestartet auf Port 8000
Verbindung hergestellt
loop
loop
java.lang.NullPointerException
testtest2test3test4test5test6
```


----------



## turtle (25. Mai 2014)

Klassen beginnen mit einem Grossbuchstaben.

Zum Zweiten ist dein Connection-Handling merkwürdig

"Normalerweise" akzeptiert der *Server* eine Socket-Verbindung und startet dann einen *Thread*, der die Kommunikation mit dem Client abwickelt.

Dein *Client* macht eine Verbindung zum Server auf, sendet was und beendet sich sofort. Wieso meinst du das der Server noch mit dem Client "reden" kann, wenn der Client bereits gestorben ist?

Also auch hier anderes Handling erforderlich.

Häufig läuft der Client in einer Schleife, bis dieser ein Kommando zum Server schickt,das aussagt "Ich bin denn mal weg."


----------

