kostenloser Webspace werbefrei: lima-city


Probleme bei Client/Serveranwendung.

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    lol4me

    lol4me hat kostenlosen Webspace.

    Hoffentlich fange ich nicht an zu nerfen.
    Ich wollte gerade eine Client/Serveranwendung basteln. Leider erhalte ich immer \"java.lang.NullPointerException\", und da ich mich mit den WinSock-Zeug unter Java noch nicht auskenne habe ich gehofft mir kann jemand sagen woran es liegt. Der Fehler trifft bei der deklartion der Variable \"in\" auf wenn der Client verbinden will.

    Der Server sollte nur den Inhalt eines Textfiles an den Clienten bei Verbindungsaufbau senden. Leider kann man soweit ich das sehe nur Integer per *.write senden, deshalb muss ich erst schauen wie man in Binär oder Oktal umrechnet, ist die einzige Möglichkeit deshalb fehlt die Funktion vorerst noch.

    Der Server:

    import java.awt.Frame;
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Main extends Frame
    {
            /** 
             * Server v 0.1 Alpha
             */
            private static final long serialVersionUID = 1L;
            static ServerSocket verbindung;
            static Socket client = null; 
            
            public static void main(String args[]) throws IOException
            {
                    new Main();
            }
            
            public Main() throws IOException
            {
                    super(\"Server\");
                    setSize(100,100);
                    setVisible(true);
                    
                    verbindung = new ServerSocket(1423);
                    Socket socket = verbindung.accept();
                    
                    if(socket != null)
                    {
                            handleConnection (client);
                    }
            }
    
            private static void handleConnection(Socket client) throws IOException 
            {
                    InputStream  in  = client.getInputStream(); 
                    OutputStream out = client.getOutputStream(); 
    
                    System.out.println(in.read()); 
    
                    List<String> gamelistlist = new ArrayList<String>();
                    
                    int i = 0;
                    
                    BufferedReader filereadcount = new BufferedReader(new FileReader(\"GameList.txt\"));
                    while(filereadcount.readLine() == null)
                    {
                            i++;
                    }
                    int icount = i;
                    i = 0;
                    BufferedReader filereadlist = new BufferedReader(new FileReader(\"GameList.txt\"));
                    while(gamelistlist.add(filereadlist.readLine()))
                    {
                            i++;
                            if(i == icount)
                                    break;
                    }
            } 
    }


    Der Client:

    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    
    public class Main
    {
            Socket socket;
            
            public static void main( String args[] ) throws IOException
            {
                    Socket server = new Socket(\"127.0.0.1\", 1423);
                    
                    InputStream  in  = server.getInputStream(); 
                OutputStream out = server.getOutputStream();  
                out.write(1);
                    
                    int result = in.read(); 
                    System.out.println( result ); 
            }
    }


    Der Server öffnet erfolgreich den Port, das habe ich schon geschaut.
    Kann mir bitte wer sagen wo der Fehler ist?


    Beitrag geändert: 21.5.2008 20:15:59 von lol4me
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.

    AFAIK kann man von einem Socket(client) keinen InputStream holen.

    Der Client sendet(Outputstream) und der Server Empfängt(Inputstream).

    solltest den Inputstream also eher vom Serversocket holen.

    (Ka, ob das das Problem wirklich behebt. Ich hab mir den code jetzt auch nicht ganz durchgelesen, aber denke, dass die NPE davon kommt.)
  4. Autor dieses Themas

    lol4me

    lol4me hat kostenlosen Webspace.

    Hm, da ist es aber auch so:

    http://www.galileocomputing.de/openbook/javainsel7/javainsel_17_008.htm#mj2ff4f7c8a15eb491d5bcbeb7cae97b63
  5. benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.

    Ok, hast mich überzeugt :/

    Evntl. mal ein paar Debug-Ausgaben?

    also einfach mal client ausgeben lassen(z.B.)
  6. p**i

    Moin,

    erst einmal denk dran, dass Du Deiner Firewall erlaubst, die Programme miteinander kommunizieren zu lassen.
    Hast Du denn mal das Beispiel von der JavaInsel direkt übernommen und getestet?
    Wo genau tritt die Fehlermeldung auf, da Du zweimal \"in\" deklariert hast?
    Also auf Server- oder Clientseite?

    Gruß,
    Puni
  7. Autor dieses Themas

    lol4me

    lol4me hat kostenlosen Webspace.

    Ich habe die Befehle von der Insel übernommen, aber eben so umgeschrieben das bei jeder Verbindungsannahme ein eigener Thread gestartet werden soll, damit er mehrere Anfragen gleichzeitig bearbeiten kann.
    client ist null, dann liegt es wohl daran. Aber warum? Er soll die void ja nur aufrufen wenn es gerade nicht so ist.
    Der Fehler tritt im Server auf.
    Ach ja, Firewall habe ich keine, nur Router und das ist bei \"localhost\" ja kein Problem.

    Beitrag geändert: 22.5.2008 19:55:47 von lol4me
  8. p**i

    Moin,

    dann denke ich, Dein Problem erkannt zu haben:

    static Socket client = null; // Zeile 19
    [...]
    private static void handleConnection(Socket client) throws IOException{
    
      InputStream  in  = client.getInputStream(); // Zeile 43
    [...]


    Ich nehme an, in Zeile 43 greift er auf den client aus Zeile 19 zu und nicht auf den Paramater der void-Methode.
    Überprüfe das mal bitte...

    Sollte das keinen Erfolg bringen, denke ich dass es an dem static liegen könnte.

    Gruß,
    Puni
  9. Autor dieses Themas

    lol4me

    lol4me hat kostenlosen Webspace.

    Ich habe in der handleConnection die Variable in client_2 umbenannt und die in/out darauf zugreifen lassen, hat genauso wie das Entfernen von \"static\" keinen Erfolg gebracht. :/
  10. p**i

    Moin,

    okay, ich habe jetzt mal das Galileo-Beispiel getestet und es funktioniert ohne Probleme.
    Ist es denn vorher schonmal bei Dir gelaufen? Oder ging es selbst mit dem Beispiel nicht?

    Gruß,
    Puni
  11. Autor dieses Themas

    lol4me

    lol4me hat kostenlosen Webspace.

    Nein, das Beispiel, also der MulServer/Client funktioniert, mein Project hat aber nie.
  12. p**i

    Ach Du je,

    nach abermaligem Überfliegen habe ich auch Deinen Fehler gefunden:

    if(socket != null)
      {
        handleConnection (client);
      }


    Da Deine Klassenvariable client = null ist, kannst Du gar nicht darauf zugreifen!
    Die Zeile nach der If-Anweisung muss handleConnection(socket) heißen.
    Immerhin rufst Du ja auch ab, ob die Verbindung = null ist...


    Beitrag geändert: 22.5.2008 22:08:30 von puni
  13. Autor dieses Themas

    lol4me

    lol4me hat kostenlosen Webspace.

    Ups, sorry. :eek:
    Wie sende ich jetzt am besten? In ANSI um\"rechnen\" und in Integer casten?
  14. p**i

    Moin,

    google sollte Dir da helfen mit \"Java Socket send File\".
    Auch hier im Forum hat bereits jemand seinen Code dafür veröffentlicht.
    Einfach mal schauen ;)

    Gruß,
    Puni
  15. Autor dieses Themas

    lol4me

    lol4me hat kostenlosen Webspace.

    Gut, danke.
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!