23. juni 2008 - 20:01Der er
16 kommentarer og 1 løsning
Server/klient
Hejsa eksperter, nu har jeg kæmpet med adskillige versioner af server/klient princippet, ud fra hvad jeg har kunne lære af andres problemer, men det kan bare ikke lykkedes mig, at lave noget som virker bare lidt .. Det ender altid med, at den kun vil sende/modtage nogle gange .. - Så nu spørger jeg, er der nogle som kan give mig et eksempel, på en yderst simpel version af klient/server, hvor klienten automatisk har et loop der modtager konstant, og det samme med serveren, således at når de er forbundet, kan de sende og modtage så tosset de vil, uden at vente på hinanden .. Helst gerne med multithread, således at den kan acceptere flere connections ..
public class recvNet extends Thread { public void run(){ String line; while(true){ //Modtag kommando fra serveren, og put i line. //Tjek om line betyder noget, og gør dit og dat. } } }
- Men er lidt blank nu, hvordan overføre jeg socket, så den kan lytte på den socket, i den nye tråd?
Men, hvordan undgår jeg en masse grimme fejlmeddelser på serveren hvis klienten lukker webbrowseren? Og hvordan får jeg serveren til at skrive en besked til en bestemt klient?
public class Server { public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(9999); while(true) { Socket s = ss.accept(); ClientHandler cli = new ClientHandler(s); cli.start(); } } catch (IOException e) { e.printStackTrace(); }
public class Server { public static void main(String[] args) { try { List lst = new ArrayList(); ServerSocket ss = new ServerSocket(12345); while(true) { Socket s = ss.accept(); ClientHandler cli = new ClientHandler(s, lst); cli.start(); } } catch (IOException e) { e.printStackTrace(); }
Jeg forsøgte faktisk med flush her i går middags, det virkede hurtigere, men løste ikke problemet, men jeg begav mig ud i at skrive det hele forfra, med stor inspiration fra dit eksempel, og der løste problemet sig selv.. Så nu virker det hele korrekt :) Du må gerne ligge et svar.
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.