Beiträge von Nicholas1991

    Und wieder macht mir Java Ärger.
    Ich möchte für das Spiel Statistiken anlegen, wer gegen wen wie oft gewonnen/verloren/unentschieden ... etc. Zu diesem Zwecke hab ich eine Klasse ClientData entworfen mit ein paar Attributen. In meiner Server Klasse habe ich jetzt einen Vektor dem ich ClientData hinzufüge.
    Jetzt das Problem.
    Wenn ich den leeren Vektor versuche abspeichern zu lassen (ObjectOutputStream) läuft meine Methode wunderbar (neuer OutputStream, dann writeObject, dann close). Auch das lesen funktioniert dann wunderbar. Wenn ich aber 1 Element hinzufüge (oder auch mehr) dann passiert folgendes im Debugger: Er springt auf die writeObject() Methode, dann klick ich auf nächster Schritt und der Debugger springt aus dem Try-Statement heraus, ohne auf close() zu springen und ohne auf die Exceptions zu springen (catch Statements FileNotFound, ClassNotFound, IO). Beim Lesen erzeugt er dann auch erst brav einen neuen ObjectInputStream, dann springt er auf die readObjectMethode(). Beim drücken auf weiter im Debugger springt er ebenfalls aus dem try-Statement raus und das eigentlich ausgelesene Objekt ist null!
    Was kann an einem Vektor falsch sein, dass ObjectStreams da so einen Fehler bauen, die reinen Datei Lese und Schreib Methoden verwende ich schon seit Jahren, hab mir da ne Klasse angelegt gehabt mit allen möglich nützlichen Methoden.

    Danke wie immer im Vorraus

    Jetzt habe ich noch ein Problem mit meinem Projekt ^^. Habe in meinem Gui ein JLabel von dem ich will, dass es den Text ZENTRIERT darstellt. Habe dafür folgendes getan:

    Code
    dasVerfluchteLabel.setHorizontalTextPosition(SwingConstants.CENTER);


    Trotzdem wird der Text LINKSBÜNDIG angzeigt.
    Kann mir das jemand erklären? ^^

    Danke wie immer im Voraus

    Ich wollte keinen neuen Thread anfangen, weil es ja immer noch das selbe Projekt ist.

    Ich lasse die Spielfläche immer Zeichnen mit java.awt.Graphics. Sobald ich jedoch ein Fenster über das Spielfeld ziehe ist das gemalte wieder verschwunden. Wie kann ich das verhindern? Muss ich da eine repaint Methode oder so neu schreiben?


    Danke wie immer im Voraus

    EDIT: Hab es jetzt mal mit der Methode Paint versucht.
    Diese überlagert in meinem abgeleiteten Panel, sodass mein Spielfeld immer mit den Aktuellen Daten gezeichnet wird.
    Allerdings fehlt da in der Regel die Ecke die das überlappende Fenster zuletzt überdeckt hat.
    Außerdem ist die Spielfläche wieder weg, wenn das Fenster mal kurz in den Hintergrund kommt, bzw minimiert wird.

    Hallo
    Ich habe für meinen Server als Trennzeichen zwischen Befehl für das Protokoll und Inhalt folgendes Zeichen gewählt:
    String.valueOf((char)55555)
    Wenn ich mir dieses Zeichen in meinem ServerGUI anzeigen lasse, bekomme ich, da es sich nicht um ein der Schriftart bekanntes Zeichen handelt, ein Kästen heraus. So soll es sein. Gibt mein ClientGUI allerdings das Zeichen aus, so steht da ein "?". So soll es nicht sein. Was ist schief gegangen beim Übertragen?
    Ich benutze PrintWriter und BufferedReader mit den Methoden println und readLine

    Danke im Voraus

    Hallo Leute,

    im Artikel http://support.microsoft.com/kb/820575/EN-US/ wird ja gezeigt, wie man in Outlook den "Outlook Heute ändern" Button wieder "aktivieren" kann. Einfach einen Registry Eintrag erstellen, bzw. Wert von 0 auf 1 setzen. Allerdings soll man aus Sicherheitsgründen den Wert wieder auf 0 setzen oder den Eintrag ganz löschen.
    Meine Frage ist:
    Wenn ich jetzt nicht jedesmal den Artikel raussuchen, mich durch die Registry kämpfen und manuell einen Eintrag erstellen will, kann ich das auch nett per Batch oder ähnliches machen? Also dann für Erstellen und Löschen natürlich.

    Danke im Voraus

    Nicholas

    Es stimmt, ich rufe die Methode wait() auf. Habe nämlich noch einen Neben-Thread, der alle 2 Sekunden prüft (wait(2000)), ob auf dem server schon zwei Clients in der ReadyToPlay Liste drin stehen. Ist dies der Fall, dann startet der Neben-Thread eine Methode des Servers und das Spiel beginnt.

    Schon wieder ein Problem.

    Wenn ich jetzt das Programm starte über den Editor. Dann kommt im EditorLogFeld ununterbrochen:
    java.lang.IllegalMonitorStateException
    Ich glaub das hat etwas damit zu tun, dass ich dem Thread auch mein Server Objekt als Referenz mitgebe. Aber wie kann ich das jetzt beheben? Das Problem ist, dass ich eine zentrale Klasse hab, auf die alle Threads zugreifen können sollen (synchronized natürlich).

    Hab jetzt glaub ich eher generell mal eine Frage zu meinem Projekt... auch bezogen auf Socket und den Kram.

    Ich hatte es mir eigentlich so vorgestellt, dass mein "Serverprogramm" aus einem Gui und einer server.java besteht, die alles bearbeiten. Jetzt sollte beim Aufruf der Methode zum Verbindungsaufbau ein neuer Thread erstellt werden, der nach neuen Verbindungen horcht. Hierbei übergibt die server.java sich selbst (this) an den Thread, damit dieser auf ihn zugreifen kann. Der Thread wartet jetzt mit der Methode accept() bis eine Verbindung aufgebaut wird und ruft dann einen neuen Thread (selbe Klasse versteht sich) der wiederum auf eine eingehende Verbindung wartet während der Ursprungsthread mit der eingegangenen Verbindung kommuniziert.

    Wenn ich jetzt das Gui starte und auf den Button Server bereitstellen klicke, dann friert mein Gui ein. Aber eigentlich sollte nach dem Drücken nur ein neuer ServerSocket erstellt werden und einer dieser ListenThreads sollte erstellt und die Methode run() aufgerufen werden.
    Kommentiere ich die ThreadZeile aus friert das Gui nicht. Deshalb muss es wohl am Thread liegen.
    Aber eigentlich hatte ich ja extra dieses warten auf weitere Clients in einen Thread gepackt, damit der Rest (das Spiel) weiterläuft, aber jetzt beim Aufruf von run() friert das Gui!? Und der Konstruktor des Threads ruft nur super auf und setzt sich zwei Variablen.

    Ich hoffe ich habe einigermaßen verständlich meine Probleme darlegen können und freue mich wie immer auf jeden Hinweis, den ich verfolgen kann.

    Nicholas

    Hallo

    Bei meinem aktuellen Programm (ein Minispiel für mich und meine Freunde) möchte ich einen "Server" programmieren der bis ich ihn per GUI stoppe ununterbrochen an einem Port horcht ob ein Eingangssignal kommt.
    Habe mir dazu folgendes überlegt:
    Neben der Hauptklasse Server wird für jeden angemeldeten User ein Thread eröffnet der dann in einer while-Schleife die auf eine boolean Variable zurückgreift (für meine Frage ist nur der Zustand true von Bedeutung). Das "Horchen" sieht folgendermaßen aus:

    Code
    while(prüfen eines Boolean Attributes) {
          try {
            input = in.readLine();   //in ist ein BufferedReader vom Socket
            //Code der input auswertet
     
          } catch (IOException e) {
            System.out.println(e);
          }


    Meine erste Frage ist:
    [INDENT]Wenn der input gerade Ausgewertet wird, aber zugleich ein neuer String gerade eintrifft, geht dieser String dann verloren? Oder wartet der in einer Art Warteschleife, bis die Methode ausliest?
    [/INDENT]Meine zweite Frage ist:
    [INDENT]Wenn gerade kein input ankommt. Was macht die Methode? Wenn sie dann zich mal die Methode durchrattert, kann es dann passieren, dass Resourcen des Host-Rechners stark beansprucht werden?
    [/INDENT]Vielen, vielen Dank schonmal im Vorraus


    Nicholas