Socket Exception tritt auf - weiß nicht weiter

mike.raab

Mitglied
Hallo Leute,

bin noch relativ neu in Java, komm von C, und versuche einen Chat zu coden.
Es müsste eigentlich soweit alles funktionieren, nur das tut es nicht. Fehler ist im Anhang.

Java:
import java.net.*;
import java.io.*;
import java.util.*;

public class Chat_Client
{
	private String ip;							// Anlegen eines Strings für die IP
	private int port;							// Anlegen einer Var. für Port
												
	public Chat_Client (String ip,int port)		// Konstruktor für Chat_Client, Parameterport
	{											// ist Port
		this.ip=ip;								// IP   = ParameterIP
		this.port=port;							// Port = ParameterPort
	}											//
	
	private void startClient() throws Exception	// Client-Starten
	{											//
		Socket s;								// Neuer Socket
		String buffer, name, targetname, msg;	// Diverse Strings
		PrintWriter out;						// Ausgabe 
		BufferedReader in;						// Eingabe
		int n;									//
		s = new Socket(ip, port);				// S = Neuer Socket, mit Ip und Port als Parameter
		buffer = null;							// Buffer entleeren
		out = new PrintWriter(new DataOutputStream(s.getOutputStream())); // Neuer Printwriter, fed mit DataOutputStream
																		  // welcher mit s.getOutputStream fed ist
	    in = new BufferedReader(new InputStreamReader(System.in));        // Neuer BufferedReader, fed mit InputStreamReader
	    																  // welcher mit System.in fed ist
	    System.out.println("\n\nClient gestartet...\n\n");      		  // Ausgabe dass Client gesartet ist
	    name = null;      												  // Username wird auf null gesetzt
	    System.out.print("Client-Name eingeben: ");						  // Aufforderung für Namenseinabe
	    name = in.readLine();											  // Name wird eingelesen
	    
        System.out.println(name);										  // Name wird ausgegeben
        System.out.flush();												  // Puffer vom OutputStream löschen
        new ClientBody(s.getInputStream()).start();     				  // Thread wird gestartet, run() wird ausgeführt        
        System.out.println("Verwendung: <hostname> <nachricht>");	      // Erklärung
        System.out.println("Beispiel: Hanswurst Hallo wie gehts\n");	  // Erklärung
        System.out.println("Hinweis: Mit 'stop' beeden");				  // Erklärung	
        System.out.println(">#"); 									      // Wartet auf eingabe  
        
        while (!  (buffer = in.readLine())  .    equals("stop"))		  // Solange in buffer nicht "stop" steht
        {																  //
        	if ((n = buffer.indexOf(" ", 0)) < 0)						  // Findet Indizis von Hostname & Nachricht raus
        	{														      // und schaut, ob etwas drin steht
        		System.out.print("\nUngültige Eingabe!" +			      // Ungültige Eingabe
        				"Verwendung: <hostname> <nachricht>");			  // Richtig verwendung
        		continue;												  // Macht mit der while-Schleifer weiter
        	}															  //
        	
        	System.out.println(">#"); 	   								  // Wartet auf Eingabe
			targetname = buffer.substring(0, n);						  // Ziel-Host wird rausgefunden
			msg = buffer.substring(n + 1, buffer.length());   			  // Nachricht wird rausgefunden
			System.out.println(name + " sendet an " + 					  // Ausgabe des Empfängers und 
							targetname +": " + msg);					  // Nachricht 
			out.flush();   												  // Buffer entleeren
        }																  //
        
      System.out.println("\n\nClient gestoppt...\n\n");					  // "stop" wurde eingegeben, Ausgabe
      in.close();														  // in wird geschlossen	
      out.close();													      // out wird geschlossen
   }																      //
 
   public static void main(String[] x) throws Exception 				  // Hauptprogramm, Kommandozeilenpara = x
   {																	  //
      if (x.length != 2)												  // Wenn keine 2 Parameter übergeben werden
      {																	  // 
         System.out.println("#java Client <server-ip> <port>");			  // Richtige Verwendung
         System.exit(0);												  // Programm beenden
      }																      //
	  			       													  //
      new Chat_Client(x[0], Integer.parseInt(x[1])).startClient();        // x[0] = IP
   }																	  // x[1] = port
}																	      // Parse -> Input: 123a
 																	      // Non-Parsed: 123a  ||  Parsed: Error
 
class ClientBody extends Thread							    			  //
{																      	  //
   private InputStream i;												  // Neuer InputStream I, zum Einlesen
   																		  
   public ClientBody(InputStream i)										  // 
   {																      //
      this.i=i;															  //
   }																      //
   
   public void run()													  //
   {																      //
      String buffer;													  // String-Buffer
      BufferedReader in;												  //									  
      int n;															  //
      																	  //
      try																  //
      {															     	  //
         in = new BufferedReader(new InputStreamReader(i));				  // Neuer BufferedReader, gefüttert mit InputStream-
         																  // Reader, gefüttert mit i
         while ((buffer = in.readLine()) != null)						  // Solange im Buffer was drinsteht
         {            													  //
            if ((n = buffer.indexOf("users|", 0)) > -1)					  //
            {														      //
               buffer = buffer.substring(n + "users|".length(),			  //
            		   					buffer.length());				  // 
               buffer = buffer.replace('|', ',');						  // 
               System.out.println("\n\n==>Angemeldete User: "			  // 
            		   					+ buffer);            			  // 
            }															  //
            else														  //
            	System.out.println("\n\n==>Eingang von " + buffer);		  //
            System.out.print("\nText eingeben ->" +						  //
            		"				<zielrechner> <message># ");      	  //
         }																  //
		  																  //	
	   } catch (Exception e){}   										  //
	   
	}

}

mal mein Code.

Hat jemand Anmerkungen ( zur Lösung des Problems ) ?

MfG
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    52 KB · Aufrufe: 37

Zurück
Oben