23. september 2006 - 15:16Der 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?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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.
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(); }
Ø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.
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.
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.