Ergebnis 1 bis 3 von 3

Thema: Problem mit Java-Chat

  1. #1
    Unregistriert
    Gast

    Standard Problem mit Java-Chat

    Hiho, mein Chat funzt nich wie er soll. Ich krieg immer ne NullPointerException und hab keinen Schimmer warum...

    hier erstma der Code vom Server:
    Code:
    import java.net.*;
    import java.io.*;
    import java.util.*;
    
    public class chatserver implements Runnable
    {
            public static final int PORT = 8765;
            protected ServerSocket listen;
            protected Vector connections;
            Thread connect;
            String[] memberlist;
            int memberlistcounter;
    
            public chatserver()
            {
                    try
                    {
                            listen = new ServerSocket(PORT);
                    } catch (IOException e)
                    {
                            System.err.println("Fehler beim Erzeugen der Sockets:"+e);
                            System.exit(1);
                    }
    
                    connections = new Vector();
    
                    connect = new Thread(this);
                    connect.start();
            }
    
            public void run()
            {
                    try
                    {
                            while(true)
                            {
                                    Socket client=listen.accept();
    
                                    connection c = new connection(this, client);
                                    connections.addElement(c);
                            }
                    } catch (IOException e)
                    {
                            System.err.println("Fehler beim Warten auf Verbindungen:"+e);
                            System.exit(1);
                    }
            }
    
            public static void main(String[] args)
            {
                    new chatserver();
            }
    
            public void broadcast(String msg)
            {
                    int i;
                    connection you;
    
                    for (i = 0; i < connections.size(); i++)
                    {
                            you = (connection) connections.elementAt(i);
                            you.out.println(msg);
                    }
            }
            
            public void addtomemberlist(String name)
            {
              connection you;
    
              System.out.println(name);  // hier gibt er mir auch den richtigen Text aus..
    
              memberlist[memberlistcounter] = name;  // hier bekomm ich ne NullPointerException
    
              int i;
              int x;
              for (i = 0; i < connections.size(); i++)
              {
                you = (connection) connections.elementAt(i);
                you.out.println("+-+newlist+-+");
                for (x = 0; x == memberlistcounter++; x++)
                  you.out.println(memberlist[x]);
              }
              
              memberlistcounter++;
            }
    }
    hier die connection-klasse:
    Code:
    import java.net.*;
    import java.io.*;
    
    class connection extends Thread
    {
            protected Socket client;
            protected DataInputStream in;
            protected PrintStream out;
            protected chatserver server;
    
            public connection(chatserver server, Socket client)
            {
              this.server=server;
              this.client=client;
    
              try
              {
                in = new DataInputStream(client.getInputStream());
                out = new PrintStream(client.getOutputStream());
              } catch (IOException e)
              {
                try { client.close(); } catch (IOException e2) {} ;
                System.err.println("Fehler beim Erzeugen der Streams: " + e);
                return;
              }
    
              this.start();
            }
    
    
            public void run()
            {
              String line;
    
              try
              {
                while(true)
                {
                  line = in.readLine();
    
                  if (line.charAt(0) != '<' && line != null)   // line kann doch garnich null sein?!
                    server.addtomemberlist(line);            // hier bekomm ich auch ne NullPointerException
                  else
                  {
                    if(line != null)
                      server.broadcast(line);
                  }
                }
              }  catch (IOException e)
              {
                System.out.println("Fehler:" + e);
              }
            }
    }
    hier das dazugehörige Applet:
    Code:
    import java.net.*;
    import java.io.*;
    import java.awt.*;
    import java.applet.*;
    
    public class chatapplet extends Applet implements Runnable
    {
            public static final int PORT = 8765;
            Socket socket;
            DataInputStream in;
            PrintStream out;
            TextField inputfield;
            TextArea outputarea;
            TextArea memberlist;
            Thread thread;
    
            public void init()
            {
                    inputfield = new TextField();
                    outputarea = new TextArea();
                    outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));
                    outputarea.setEditable(false);
                    memberlist = new TextArea();
                    memberlist.setFont( new Font("Dialog", Font.PLAIN, 12));
                    memberlist.setEditable(false);
    
                    this.setLayout(new BorderLayout());
                    this.add("South", inputfield);
                    this.add("West", outputarea);
                    this.add("Center", memberlist);
    
                    this.setBackground(Color.lightGray);
                    this.setForeground(Color.black);
                    inputfield.setBackground(Color.white);
                    outputarea.setBackground(Color.white);
                    memberlist.setBackground(Color.yellow);
            }
    
            public void start()
            {
              String username = this.getParameter("username");
              if (username == null)
                username = "Admin";
                
              String greeting = "Greetings " + username;
              
                    try
                    {
                            socket = new Socket(this.getCodeBase().getHost(), PORT);
                            in = new DataInputStream(socket.getInputStream());
                            out = new PrintStream(socket.getOutputStream());
                    } catch (IOException e)
                    {
                            this.showStatus(e.toString());
                            say("Connecting failed!");
                            System.exit(1);
                    }
    
                    say("Connection established.");
                    say(greeting);
    
                    if (thread == null)
                    {
                            thread = new Thread(this);
                            thread.setPriority(Thread.MIN_PRIORITY);
                            thread.start();
                    }
                    
                    out.println(username);
            }
    
    
            public void stop()
            {
                    try
                    {
                            socket.close();
                    } catch (IOException e)
                    {
                            this.showStatus(e.toString());
                    }
    
                    if ((thread !=null) && thread.isAlive())
                    {
                            thread.stop();
                            thread = null;
                    }
            }
    
    
            public void run()
            {
              String line;
    
              try
              {
                while(true)
                {
                  line = in.readLine();
    
                  if (line == "+-+newlist+-+")
                  {
                    memberlist.repaint();
                    break;
                  }
                                    
                  if (line.charAt(0) != '<')
                  {
                    memberlist.append(line+'\n');
                  }
                  else
                  {
                    if(line != null)
                      outputarea.appendText(line+'\n');
                  }
                }
              } catch (IOException e) { say("Lost connection."); }
            }
    
    
            public boolean action(Event e, Object what)
            {
              String username = "<" + this.getParameter("username") + "> ";
              
                    if (e.target==inputfield)
                    {
                            String inp = username + (String) e.arg;
    
                            out.println(inp);
                            inputfield.setText("");
                            return true;
                    }
    
                    return false;
            }
    
    
            public void say(String msg)
            {
                    outputarea.appendText("*** "+msg+" ***\n");
            }
    }
    Sinn des Ganzen ist, wenn sich ein User einloggt der Username über die connection-Klasse an den Chatserver weitergegeben wird, welcher darauß einen Array aus Strings macht und den dann wieder an die Clienten austeilt.
    Nachrichten versenden funktioniert aber das mit der Memberliste eben nicht, weil er irgendwie der Meinung ist, dass die Variable "name" null ist.
    Kann mir wer helfen?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Interessierte/r
    Registriert seit
    12.01.2009
    Ort
    nähe Trier
    Alter
    35
    Beiträge
    131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Problem mit Java-Chat

    Hallo,

    könntest du bitte noch die Exception posten?

    Gruß

    Sascha

    EDIT:
    Ich hab mir den Quelltext mal etwas angeschaut.

    Die erste NullPointerException bekommst du, weil das String-Array memberList nicht instanziert wurde.
    Du machst zwar
    Code:
    String[] memberlist;
    aber da fehlt noch ein
    Code:
    new String[/*hier die Größe des Arrays*/];
    .

    Poste aber noch bitte die andere Exception.

    Du solltest versuchen dich etwas an die Java-Namenskonventionen halten. Diese sagen aus, dass Klassennamen am Anfang groß geschrieben werden.

    Gruß

    Sascha
    Geändert von sashs (27.01.2009 um 17:45 Uhr)

  3. #3
    König(in)
    Registriert seit
    06.06.2007
    Ort
    Bi
    Beiträge
    1.015
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Problem mit Java-Chat

    Hi,
    du hast eine Nullpointer Exception, die wohl auf mehrere Zeilen hintereinandere verweist, aber erst einmal auf deinen Beitrag eingehend

    if (line.charAt(0) != '<' && line != null)
    Würde trotzdem eine nullpointer bei line auftreten, da du zuerst versuchst auf das Objekt zu zu greifen und danach erst auf null prüfst

    if (line != null && line.charAt(0) != '<')
    Wäre die korrekte Variante (also umgedreht).
    server.addtomemberlist(line); // hier bekomm ich auch ne NullPointerException
    Es ist in diesem fall nicht line null, sondern entweder server selbst, oder etwas in der aufgerufenen Methode addtomemberlist.
    Dabei fällt auf, dass in genau dieser Methode die andere nullpointer auftritt. Ohne größere Diagnose würde ich sagen, dass dies ein zusammenhängendes Problem ist.
    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.

    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

Ähnliche Themen

  1. Problem mit Chat
    Von Arno112 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 08.07.2008, 16:37
  2. irc chat via java oder ähnlichem script einbauen
    Von nick2 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 12.12.2007, 21:48
  3. Chat ohne Java
    Von epfan im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 27.06.2006, 21:18
  4. Chat Problem
    Von Foulfang im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 19.04.2005, 10:12
  5. ICh suche einen Bot für einen java chat
    Von CHATER im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 28.04.2004, 22:51

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •