Consolen Ausgabe

Status
Nicht offen für weitere Antworten.

Mentor49

Mitglied
Guten Abend :)

Zurzeit programmiere ich an einem Multichat.
Dieser beruht auf der wunderschönen Terminal (Für Windowsuser: Eingabeaufforderung)
Der Server macht keine Probleme, viel mehr der Client.
Wenn der Client getstartet wird, laufen 3 Threads nebeneinander.
1. die Klasse Read (Zum Einlesen+Decodierung von den empfangenen Bytes und anschließend die Ausgabe als String)
2. die Klasse Send (Zum Einlesen+Encodierung der Eingabe vom Benutzer (via InputStream) und anschließend der "Versand" an den Server)
3. Thread run() in der ChatClient-Klasse (HauptKlasse eigentlich) in der immer gecheckt wird ob "done == true" ist, wenn jah, wird der Client geschlossen (Der Thread hat nichts zur sache des Problems)

Mein Problem:

Login auf Server...
Eingeloggt!
>> person1 hat sich eingeloggt.
Server: Willkommen person1.
User: >>person2 hat sich ausgeloggt.
[Return]
User:
Da ich denke dass das jetzt kaum einer verstanden hat, versuch ich es nochmal zu erklären.
Erstmal bisschen Code:
Klasse Read im Client:
Code:
import java.io.*;

public class Read extends Thread
{
    
    ChatClient cc;
    Decode decoding;
    
    public Read(ChatClient chatclient)
    {
        this.cc = chatclient;
    }
    
    private void read() throws IOException
    {
        byte[] data, decodedata;
        decoding = new Decode();
        String line, plaindecodedata;
        while(true)
        {
            line = cc.in.readLine();
            if (line != null)
            {
            data = line.getBytes();
            decodedata = decoding.getBytes(data);
            plaindecodedata = new String(decodedata);
            System.out.println(plaindecodedata); // Point1
            }
        }
    }
    
   @Override public void run()
    {
       try
       {
           read();
       }
       catch(IOException e)
       {
           System.out.println("Error: " + e.getMessage());
       }
       cc.done = true;
    }
}
und einmal die Klasse Send vom Client:
Code:
import java.io.*;

public class Send  extends Thread
{
    PrintWriter out;
    Encode Encoding;
    ChatClient cc;
    String name;
    public Send(ChatClient cc, String name)
    {
        out = cc.out;
        this.cc = cc;
        this.name = name;
        Encoding = new Encode();
    }
    
    public void send(String plaindata)
    {
        byte[] data = plaindata.getBytes();
        byte[] encodedata = Encoding.getBytes(data);
        String plainencodedata = new String(encodedata);
        out.println(plainencodedata);
        out.flush();
    }
    public void run()
    {
        try{
        BufferedReader userinput = new BufferedReader(new InputStreamReader(System.in));     
        String line;
        System.out.print(name + ": "); // Point2
        while (!(line = userinput.readLine()).equals("quit"))
        {
            send(line);
            System.out.print(name + ": "); //Point3
        }
        userinput.close();
        }
        catch (IOException e)
        {
            System.out.println("Error: " + e.getMessage());
        }
        cc.done = true;
    }
}
Ich hab in den Quellcodes 3 Punkte einkommentiert.
Also bei Point2 bzw Point3 wird halt das ausgegeben:
"Username: " und da kann man dann was schreiben, was an den Server soll.
Doch wird grade was vom Server empfangen, wird einfach hinter gesezt.
Bzw wird ne neue Line angefangen UND ich muss sogar noch erst [Enter] drücken um nochmal was scheiben zu können.

Also eigentlich möchte ich, dass
immer unten steht, und wenn was gesendet wird, ruscht die "User-Inputline" halt einen runter.

Also ich hoffe irgendjemand hat das verstanden und kann mir eventuell helfen.
Wer das ganze überhaupt nicht gecheckt hat und nocht weiß was ich eigentlich will, für den hab ch vollstes Verständis :cry:

Nunja, wir werdens sehen, Lg Chris (;
(PS: Und nein, ich möchte das ganze nicht mit ner GUI (Listbox+Textbox) lösen ^^)
 
S

SlaterB

Gast
gib doch aus
User: bähbäh, Eingabe abgebrochen
>> Server-Meldung
User: [hier auf neue Eingabe warten bzw das System.read merkt davon ja nix]


wenn der User allerdings schon einen halben Satz getippt hat, wird auf jeden Fall das Chaos ausbrechen..
solche Interaktion geht in einem normalen Terminal nicht oder hast du das schon von irgendeinem Programm gesehen? (das wäre dann zumindest kein abstraktes Java ;) )
immer nur bekanntes nachbauen, nicht unmögliche Dinge erfinden wollen

------

vielleicht wartest du mit weiteren Server-Meldungen, bis der User seine Eingabe beendet hat,
evtl. ihm mitteilen, dass er, auch wenn er nix tippen möchte, ab und zu mal Enter klicken muss, um über den neuesten Server-Stand informiert zu werden,
oder verschiedene Modi: Eingabe/ Warten

so wäre die Organisation gewahrt
 

Mentor49

Mitglied
Och mensch.
wenn der User allerdings schon einen halben Satz getippt hat, wird auf jeden Fall das Chaos ausbrechen..
Genau das passiert ja immer ^^
Hm dann werd ich das doch wohl mit ner GUI lösen müssen.
Ich wollte dich erste Version meines Clients eigentlich in der Terminal lassen.
Nungut, dankeschön für die Antwort.

Lg Chris
 
G

Gast

Gast
Evtl. sowas wie ncurses für java. Hab aber auf Javaseite damit keine Erfahrungen first-hit bei Google ist CHARVA. Sieht jedenfalls bei den Screenshots so aus, als ob es genau das tut, was man erwartet.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
x22 Unterstreichen eines Consolen-codes Allgemeine Java-Themen 6
K Unit Test consolen ein-/ausgaben. Allgemeine Java-Themen 7
kodela Gemittelte Ausgabe von Buchstaben Allgemeine Java-Themen 11
L Event Handling Ausgabe von Radioboxen und befüllen von Comboboxen Allgemeine Java-Themen 1
curranux Ausgabe als Textdatei schreiben. Allgemeine Java-Themen 2
Master3000 Komisches Zeichen als Ausgabe in der Konsole Allgemeine Java-Themen 20
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
R In der Ausgabe sollte anstelle des obersten Sterns ein "+" stehen nur scheitere ich bei der Implementierung Allgemeine Java-Themen 9
L Ausgabe von in Echtzeit ausgeführten Code Allgemeine Java-Themen 9
B System.out Ausgabe auf jtextarea Fehlersuche Allgemeine Java-Themen 8
J Ausgabe von Links nach Rechts ausgeben? Allgemeine Java-Themen 2
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
B Game of life Ein und Ausgabe Configurations Datei Allgemeine Java-Themen 17
Exdroid BlueJ Wie bekomme ich die Ausgabe in eine TXT Datei? Allgemeine Java-Themen 2
M Input/Output CMD Ausgabe als ButtonEvent Allgemeine Java-Themen 5
Tausendsassa Input/Output Problem mit der gleichzeitigen Ausgabe zweier Threads Allgemeine Java-Themen 8
S 2-spaltige Ausgabe als Tabelle ausgeben Allgemeine Java-Themen 12
C Hilfe bei einer Point Ausgabe Allgemeine Java-Themen 7
B JFrame Text Ausgabe Allgemeine Java-Themen 7
D Variablen Ausgabe bzw. einlese Fehler Allgemeine Java-Themen 7
M Eclipse Keine Ausgabe mehr bei Fehlern Allgemeine Java-Themen 3
O log4j, Problem bei Ausgabe null-Wert Allgemeine Java-Themen 0
J Ausgabe nach Excel Allgemeine Java-Themen 1
balwan Unverständlichkeit einer Ausgabe Allgemeine Java-Themen 4
K Input/Output Ausgabe in Textdatei Allgemeine Java-Themen 7
B Barcode4j Ausgabe Formatieren Allgemeine Java-Themen 3
S Speichern/Laden/Hinzufügen/Löschen der Array-Wörter; unerwartete Ausgabe Allgemeine Java-Themen 6
H Scanner: Ausgabe erst nach Abbruch Allgemeine Java-Themen 8
K Methoden Ausgabe erfolgt nicht Allgemeine Java-Themen 6
T Ausgabe falsch! Allgemeine Java-Themen 5
W Input/Output Ausgabe eines Statements Allgemeine Java-Themen 5
P Falsche Ausgabe Allgemeine Java-Themen 5
nutellastulle Zugriff, Übergabe, Bearbeitung und Ausgabe von Jlist Allgemeine Java-Themen 6
D Ausgabe von C# Konsolenanwendung lesen Allgemeine Java-Themen 5
O Input/Output CMD-Ausgabe abfangen und in Datei speichern Allgemeine Java-Themen 8
P Pdf ausgabe Allgemeine Java-Themen 3
schlingel Process - Ausgabe leer Allgemeine Java-Themen 5
C Ausgabe unklar Allgemeine Java-Themen 2
J Applet Ausgabe beim Speichern ausblenden Allgemeine Java-Themen 4
Rudolf Java Ausgabe einer Texttabelle im Prompt Allgemeine Java-Themen 4
P Ausgabe der berechneten Fakultaet Allgemeine Java-Themen 12
M Ausgabe in Datei zum Ausdruck Allgemeine Java-Themen 2
E formartierte Ausgabe zur Laufzeit Allgemeine Java-Themen 2
D Bildschirm Flackert bei Ausgabe Allgemeine Java-Themen 4
K Windows Fehlerkanal -> Ausgabe in Datei Allgemeine Java-Themen 6
H Ausgabe von zwei Textfeldern Allgemeine Java-Themen 3
R log4j - Ausgabe der Logs Allgemeine Java-Themen 3
L in zufälligen Sekunden Ausgabe machen Allgemeine Java-Themen 2
W Ausgabe beschleunigen? Allgemeine Java-Themen 3
O Backslashes werden in der Ausgabe nicht übernommen Allgemeine Java-Themen 5
X Ausgabe auf JEditorPane Allgemeine Java-Themen 5
B Ausgabe auf der Konsole bei Nebenläufigkeit, Threads und Synchronisation Allgemeine Java-Themen 8
A Ausgabe in OpenOffice Calc oder pdf Allgemeine Java-Themen 3
T Ausgabe in txt.Datei speichern Allgemeine Java-Themen 23
S Boolean Ausgabe JasperReports Allgemeine Java-Themen 2
G Ausgabe mit tag Allgemeine Java-Themen 3
W Ausgabe von Fließkommazahlen formatieren Allgemeine Java-Themen 2
D Ausgabe HTML-Seite Allgemeine Java-Themen 5
H Externe Prozesse und Inputstreams - ausgabe in JTextArea Allgemeine Java-Themen 3
G Ausgabe in eine txt Datei schreiben? Allgemeine Java-Themen 7
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
J Ausgabe der Quelltext Zeilennummer? Allgemeine Java-Themen 12
B serlvet system.out ausgabe Allgemeine Java-Themen 4
B Ausgabe auf stdout "löschen" und dafür neue Ausgab Allgemeine Java-Themen 10
X e.printStackTrace Ausgabe in Datei umleiten? Allgemeine Java-Themen 14
B Ausgabe mit print wird verzögert Allgemeine Java-Themen 9
D Dateien und ordner ausgabe Allgemeine Java-Themen 5
M Rekursive Ausgabe einer linkedList Allgemeine Java-Themen 8
M Ausgabe in Console formatieren`? Allgemeine Java-Themen 12
D Seltsame Ausgabe beim zusammenführen zweier Dateien Allgemeine Java-Themen 14
I Composite Pattern für Ausgabe von Ausdruck Allgemeine Java-Themen 3
H falsche ausgabe Allgemeine Java-Themen 15
S Datei Ausgabe Allgemeine Java-Themen 4
T Fehlersuche bzw. woher kommt diese ausgabe? Allgemeine Java-Themen 2
D Formatierte Ausgabe vom ProcessBuilder Allgemeine Java-Themen 4
S Endlos-Schleife bei Ausgabe von ArrayList Allgemeine Java-Themen 6
L Ausgabe auf GUI verzögert Allgemeine Java-Themen 2
D Die Ausgabe von Tidy in eine Datei umleiten Allgemeine Java-Themen 3
R Vorzeichen bei der Ausgabe Allgemeine Java-Themen 7
G Problem mit Ausgabe-Kanälen Allgemeine Java-Themen 2
T Ausgabe bei Struktogrammen Allgemeine Java-Themen 2
G JTextField: Feld für Ausgabe von Meldungen Allgemeine Java-Themen 14
B Formatierte Ausgabe Allgemeine Java-Themen 3
G Einlesen der Ausgabe eines Shellskripts mit Java Allgemeine Java-Themen 2
B Fehler bei Ausgabe in Datei Allgemeine Java-Themen 11
G Ausgabe Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben