Applet Chat Problem

Gisl0r

Grünschnabel
Ich hab erst vor ein paar Tagen mit Java angefangen und habe mich nun unter Anleitung von meinem Buch an einen Webchat gewagt.
Das Problem war nur das der Chat im Buch mit Gui Interface war aber ich wollte ein Applet.
Dann habe ich mir hald ein Applet Tutorial gesucht und versucht das ganze umzuschustern.
Nun hänge ich bei einem (wahrscheinlich) kleineren Problem, aber ich finde einfach keine Lösung.

Code:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*; 

public class ChatClient extends Applet implements ActionListener  {
	Button send;
	TextArea chat_field;
	TextArea userlist;
	TextField send_line;
	PrintWriter writer;
	BufferedReader reader;
	Socket sock;

	public void init() {
		ChatClient client = new ChatClient();
		setLayout(null);
		
		send = new Button("Abschicken");
		chat_field = new TextArea(60,60);
		userlist = new TextArea(20,10);
		send_line = new TextField("",1000);
		send.setBounds(310,205,100,20);
		chat_field.setBounds(5,5,300,170);
		chat_field.setEditable(false);
		chat_field.setBackground(Color.white);
		
		userlist.setBounds(310,0,100,200);
		send_line.setBounds(5,180,290,20);
		add(send);
		add(send_line);
		add(userlist);
		add(chat_field);
		send.addActionListener(this);
		
		client.los();
	}
	
	public void los() {
			
		
		netzwerkEinrichten();
		Thread readerThread = new Thread(new EingehendReader());
		readerThread.start();
		
	
	} // los schließen
	
	private void netzwerkEinrichten() {  
		try {
			sock = new Socket("127.0.0.1", 5000);
			InputStreamReader streamReader = new InputStreamReader(sock.getInputStream());
			reader = new BufferedReader(streamReader);
			
			writer = new PrintWriter(sock.getOutputStream());
			writer.println("ahha");
			System.out.println(writer);
			System.out.println("verbindung steht");
		} catch(IOException ex) {
			ex.printStackTrace();
		}
	} // netzwerkEinrichten schließen   
	
		
	public void actionPerformed(ActionEvent ev) {
		try {
			System.out.println(writer);
			writer.println(send_line.getText());
			writer.flush();
			
		} catch(Exception ex) {
			ex.printStackTrace();
		}
		send_line.setText("");
		send_line.requestFocus();
	}
	
	
    
	public class EingehendReader implements Runnable {
		public void run() {
			String nachricht;
			try {
				
				while ((nachricht = reader.readLine()) != null) {
					System.out.println("gelesen: " + nachricht);
					chat_field.append(nachricht + "\n");
					
				} 
			} catch(Exception ex) {ex.printStackTrace();}
		} 
	} 
}

Ich bekomme dort immer einen komischen Error wenn ich auf den Button klicke.
Code:
java.lang.NullPointerException
        at ChatClient.actionPerformed(ChatClient.java:75)

Mfg Gis
 
Hallo Gis,

wie der Name schon sagt ist es eine Nullpointerexception. Eine Nullpointerexception tritt dann auf, wenn man mit einer Referenzvariable versucht eine Methode aufzurufen oder einem Attribut einen Wert zuzuweisen, und in der Variable die Nullreferenz gespeichert ist.

In dem Fall ist es der reader. Wenn du folgende Zeile an den Anfang der run() Methode aus der EingehendReader{} Klasse schreibst, wirst du sehen das die Variable reader noch keine gültige Referenz auf ein Objekt enthält sondern die null als wert hat:
System.out.println(reader);


Vg Erdal
 
Das ist mir auch schon aufgefallen, aber ich habe weiter oben doch reader gesetzt, das sollte auch vor der Funktion, wo ich versuche reader zu benutzen, gesetzt worden sein.
 
Hallo Gis,

also da gibt es nichts zu überlegen, ich habe die Klasse ausgeführt, der reader hat den Wert null. Der Compiler hat nebst diesem weitere Exceptions (Socket) gemeldet. Es ist jetzt gut möglich das in der Methode netzwerkEinrichten() vorher ein Exception auftritt und es garnicht zur Instanziierung des BufferedReaders kommt.


Vg Erdal
 
Zurück