Avatar billede evilfish Nybegynder
23. september 2006 - 15:16 Der er 7 kommentarer og
1 løsning

Starter jeg tråden op korrekt?

Hej eksperter

Jeg er ved at lære om trådprogrammering, og er ved at lave et server der kan klare flere clienter af gangen. Jeg kan sagten connecte til serveren med client1 og udføre kommandoer. Bagefter kan jeg logge på med client2 og udfører med kommandoer. Men når jeg så prøver at udfører kommandoer med client 1 igen, taber min server det hele på gulvet. Jeg tror det har noget at gøre med hvordan jeg starter tråden op. Det gør jeg således:

    public static void run()
    {
        while(acceptconnections)
        {
            Socket link = null;
       
            try
            {
                link = servSock.accept();
                System.out.println("New client connected...");
                ClientHandler handler = new ClientHandler(link);
                handler.start();
                System.out.println("New thread started for client");
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
        }
    }

Nogle der kan se om fejlen ligger i koderne overfor eller skal jeg til at sidde og rode det hele igennem?
Avatar billede mikkelbm Nybegynder
23. september 2006 - 16:52 #1
Jeg kan ikke se noget galt i din kode der. Det er nok i run metoden i din clienthandler den er gal. I den kode du har posted opretter du jo blot en ny instans af ClientHandler og mere er der jo ikke i det - bortset fra at kalde start.

Prøv at poste koden i run-metoden på din ClientHandler.
Avatar billede evilfish Nybegynder
23. september 2006 - 17:43 #2
Clienthandler kode:
public void run()
    {
        try
        {
            BufferedReader in = new BufferedReader(new InputStreamReader(link.getInputStream())); //Step 3.
            PrintWriter out = new PrintWriter(link.getOutputStream(),true); //Step 3.
            String message = in.readLine();
            Commands com = new Commands(in,out);
            while(!message.equals("***CLOSE***"))
            {
                if(message.equals("listtxt")) // List all txt files on server
                {
                    com.listtxt();
                }
                else
                {
                    out.println("Command not valid");
                }
                message = in.readLine();
            }
           
           
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }

        finally
        {
            try
            {
                System.out.println(
                                "\n* Closing connection... *");
                link.close();                    //Step 5.
            }
            catch(IOException e)
            {
                System.out.println("Unable to disconnect!");
                System.exit(1);
            }
        }
    }
Avatar billede mikkelbm Nybegynder
23. september 2006 - 17:47 #3
Får du udskrevet nogen exception?
Avatar billede evilfish Nybegynder
23. september 2006 - 17:48 #4
Jep - Giv mig 5 min så kommer de med :)
Avatar billede evilfish Nybegynder
23. september 2006 - 17:53 #5
Øhh - Jeg tror sku jeg har fundet fejlen da jeg skulle prøve at genere fejlen igen. Fejlen ligger i clienten vil jeg tro. Jeg undersøger lige nærmere om det faktisk er der problemet ligger. Tak for din hjælp indtil videre i hvert fald.

Problemet opstår i at jeg har en kommando i clienten som giver svar tilbage på client siden, men ikke serversiden. Og jeg tror client forventer svar fra clienten i den kommando og fejl så derefter.
Avatar billede evilfish Nybegynder
23. september 2006 - 17:55 #6
Rettelse - Jeg skriver til serveren uden det er nødvendigt, og den sender et svar tilage som clienten får. Når så næste kommando udføres får den forkert svar - Det er protokollen der er gået kuk. :D    Tak fordi du fik mig til at teste det igen.
Avatar billede evilfish Nybegynder
23. september 2006 - 18:00 #7
Yes - Det var fejlen - Smider du lige et svar :)
Avatar billede mikkelbm Nybegynder
23. september 2006 - 18:03 #8
Kommer her...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester