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.
mal mein Code.
Hat jemand Anmerkungen ( zur Lösung des Problems ) ?
MfG
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