# Probleme bei Chat programm



## PrinzMartin (21. Aug 2007)

Moin Moin


mein erster Beitrag hier also erst mal ich bin der Martin und ich hoffe ich gehe euch hier nicht all zu oft auf die Nerven^^ aber heute muss es mal sein...

also ich bin gerade dabei ein Chat Programm zu schreiben ich bin jetzt schon soweit, dass ich es mit Threads probiere damit auch mehrere clients mitmachen können und eigentlich müsste theoretisch auch alles funktionieren nur habe ich ein bisher nie aufgetretenes Problem.... bzw ich dachte da dürfte es kein Problem geben...

es ist eine Null pointer Exception im Thread.....................

ich habe die Dateien mal hier hochgeladen

www.martinleurs.de/java_chat/chat.rar

das sind einmal der Server mit Server klasse, da müsste aber eigentlich alles klappen bzw da bekomme ich keinen Fehler es funktioniert wahrscheinlich nicht aber da arbeite ich selber weiter und hoffe, dass ich das selbst hinbekomme..

dann ist da der Client mit der Client Klasse und da liegt das Problem... sobald ich den Thread in der Client Klasse starte ( dass passiert wenn man auf connect klickt) bekomme ich die Exception und ich kann mir einfach nicht erklären warum vllt steh ich nur aufm Schlauch aber ich sitz hier jetzt den ganzen Tag und komme nicht weiter.


außerdem schaffe ich es auch nicht, dass die Client Klasse was in dem Textfeld der Gui ausgeben kann da dabei sollte auch das eigentlich funktionieren, dass ist die Stelle wo auch der Fehler auftritt.....

naja ist vllt viel Arbeit für euch das mal durchlaufen zu lassen aber ich hoffe jemand gibt sich die Mühe und ich bedanke mich schon mal...

also danke sehr schon mal im vorraus  :toll:  :applaus:


----------



## Dante (22. Aug 2007)

hi, helfen ist an sich kein problem, aber mach es deinen potentiellen helfern bitte so einfach wie möglich und poste hier die entsprechenden Code-Teile udn die genaue Fehlermeldung. Es wird sich einfach kaum einer die Mühe machen, extra dein Archiv herunterzuladen und den Fehler selber zu suchen...


----------



## PrinzMartin (22. Aug 2007)

joa du hast denke ich recht ich bin jetzt den Code auch noch mal durchgegangen und da das Programm so langsam aber sicher gewachsen ist habe ich das Problem mal extrahiert sozusagen und noch mal neu angefangen ich hab jetzt immer noch eine NullPointerException.....

scheinbar blockiert das readLine() nicht wirklich hier mal der Code


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

public class cClient
{
  // Anfang Variablen
  Socket server;
  BufferedReader input;
  BufferedWriter output;
  // Ende Variablen


  // Anfang Ereignisprozeduren
  public cClient() throws IOException
  {
  
    server = new Socket("localhost",1234);
    input = new BufferedReader(new InputStreamReader(server.getInputStream()));
    output = new BufferedWriter(new OutputStreamWriter(server.getOutputStream()));

      System.out.println("schreibe");
      output.write("hallo");
      output.newLine();
      output.flush();
      System.out.println("warte");
      System.out.println(input.readLine());
  }

  // Ende Ereignisprozeduren
}
```

So das ist der Client der sendet meiner Ansicht nach ein mal und wartet dann auf eine eingabe.... jetzt kommt der Server , der nimmt den input den er bekommt perfekt an, dann gibt er ihn auch aus, er sendet ihn dem Client auch zurück... nur dann wartet er nicht erneut auf einen Input vom Client, sondern er geht am readLine() vorbei und probiert was zu schreiben, da bekomme ich dann aber die Exception....

Dabei macht es keinen Unterschied wie oft der client sendet wenn ich 10 mal sende arbeitet er 10 mal korreckt und dann kommt die Exception aber nicht nach jedem senden sondern immer erst am ende wenn keine neue eingabe mehr kommt irgendwie.....


```
public void arbeite() throws IOException
 {

    BufferedWriter output = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
    String text;
    
    while(true)
    {

       // lesen
       System.out.println("warte");
       text = input.readLine();   ///////////////////////HIER MÜSSTE DER THREAD EIGENTLICH EWIG WARTEN////////
       System.out.println("schreibe");   //////////////TUT ER ABER NICHT DA ER NOCH SCHREIBE AUSGIEBT////////
       // schreiben                              //////////////OBWOHL GAR KEIN INPUT MEHR KOMMEN DÜRFTE///////////////
       output.write(text);         ////////////////////////HIER LIEGT DIE EXCEPTION////////////////////////////////////////
       output.newLine();
       output.flush();
       System.out.println(text);
    }
   // aufräumen

}
```

arbeite() wird von der run() methode beim start des Threads aufgerufen

ich hoffe das ist jetzt einfacher für euch


----------

