Socket Server / Client problem

PrinzMartin

Grünschnabel
Moin Moin


ich habe angefangen mir einen kleinen Chat zu programmieren und schon vor der Gui hatte ich das erste Problem.... der Client sendet wunderbar daten, der Server empfängt diese Daten und sendet sie zurück.... soweit ist auch alles wunderbar nur in dem moment wo keine neue nachricht vom client kommt, gibt mir die Thread Klasse einen Null Pointer Exception...


Dass hier ist der Client:
Code:
  public cClient() throws IOException
  {
  
    server = new Socket("localhost",1234);
    input = new BufferedReader(new InputStreamReader(server.getInputStream()));
    output = new BufferedWriter(new OutputStreamWriter(server.getOutputStream()));

      for(int i=0;i<10;i++)
      {

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

  }


Das hier ist der Server und da liegt auch das Problem vllt kann ja mal jemand rüber schauen das wär echt toll ihc kanns mir nicht erklären....
Code:
 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 das Programm doch eigentlich 
       System.out.println("schreibe");              ///////geblockt werden aber es scheint weiter zu
       // schreiben                                         ///////arbeiten..... trotzdem wird noch probiert was  
       output.write(text);                                ///////zu schreiben aber da is ja nix mehr....
       output.newLine();
       output.flush();
       System.out.println(text);


    }
   // aufräumen

 }


Wär echt toll danke sehr.... schon mal im Vorraus
 
Zuletzt bearbeitet:
das ist die Server main

Code:
  import java.net.*;
  import java.io.*;

public class mServer
{

  public static void main(String[] args) throws IOException
  {
     // Server aufbauen
     ServerSocket server = new ServerSocket(1234);
     Socket s;
     System.out.println("ich bin der Server");
     
     while(true)
     {
       // Auf verbindung warten
       s = server.accept();
       // kommunikation an einen nebenläufigen Thread abgeben
       ServerThread t = new ServerThread(s);
       t.start();
       // und wieder auf neue Verbindungen warten
     }
  }
}

und jetzt die Client main

Code:
import java.io.*;
import java.net.*;

public class Client
{

  public static void main(String[] args)
  {
  
  
    try {
       cClient client = new cClient();
     } catch (IOException e)
     {
       System.out.println("  Leider konnte keine Verbindung hergestellt werden  ");
       System.out.println(e);
     }
  }
}


soooo ich hoffe das hilft das müsste es gewesen sein oder fehlt bei denen oben noch was ich muss mal schauen
 
Ja beim Server Fehlt noch was in der Klasse hier kommt die Server klasse noch mal


Code:
import java.net.*;
import java.io.*;

public class ServerThread extends Thread
{

private Socket s;

 public ServerThread(Socket s)
 {
   this.s = s;
 }

 public void run()
 {
   try
   {
     arbeite();
   }
   catch (IOException e)
   {

   }
 }
 
 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();
       System.out.println("schreibe");
       // schreiben
       output.write(text);
       output.newLine();
       output.flush();
       System.out.println(text);

    }
   // aufräumen

 }
}


so bitte sehr ich hoffe ihr könnt helfen danke sehr
 
Also ich hab deinen Code mal laufen lassen und bei mir läuft er wunderbar, das Problem muss wo anders her kommen!
 
hast du dir denn auch die ausgabe des Servers angesehen? also das Fenster... ich sage da gar nicht dass das Programm nicht läuft es ist nur so, dass es am ende einen Fehler gibt zumindest bei mir und das ist der ganze code des ganzen Programms sonst weiß ich auch nicht weiter...
 
Also ich hab überall wo es noch nötig war die Exceptions abgefangen und ausgeben lassen aber bei mir tritt keine auf, der Server läuft regulär durch -->kein Fehler.

Du kannst aber mal versuchen den Socket nach der beim Client nach Abarbeitung zu schließen.

s.close();

das macht man eigentlich vielleicht liegt es daran
 
Zurück