Vraag & Antwoord

Programmeren

ServerSocket - java

6 antwoorden
  • Hallo In mijn programma wacht ik mbv een serversocket (methode accept()), op een verbinding. Maar door deze methode te gebruiken kan ik verder niets anders doen met het programma dan wachten op een verbinding De server stoppen door middel van een stop knop lukt dus niet meer, desondank ik de server in een aparte thread heb lopen. Met een client kan ik wel gewoon verbinding maken met de server. Hoe moet ik dit oplossen?
  • Post je code eens.
  • Dit is dan het stukje waar gewacht wordt op een verbinding, zelf zit het in een aparte thread. [code:1:324dd4acac]class MyServer extends Thread { private ServerSocket ss; public MyServer(int socketnumber) throws Exception{ ss = new ServerSocket(socketnumber); } public void run(){ while(true){ try{ Socket incoming = ss.accept(); new MyServerHandler(incoming); } catch(IOException ioex){} } } }[/code:1:324dd4acac]
  • Kun je even de aanroepende code geven ?
  • Dit is dus waar de thread aangeroepen wordt. Terwijl ik de code hier plaatst zag ik dat de thread nog gestart werd dmv run(), omdat ik eerst Runnable implementeerde in de server-klasse. Dit heb ik later vervangen door Thread, maar run() is hier blijven staan. Nu heb ik run dus vervangen door start() en is het probleem opgelost. Wel vreemd eigenlijk, of toch niet?. Toch nog bedankt [code:1:e4dded3648] class Netprogram extends JFrame implements ActionListener { private MyServer serv; public Netprogram() { //getContentPane().add(buildView(),"Center"); //getContentPane().add(buildControl(),"South"); try{ serv = new MyServer(1200); } catch(Exception ex){} } public void actionPerformed(ActionEvent e){ String cmd = e.getActionCommand(); if(cmd.equals("start")){ //start server thread serv.run(); } if(cmd.equals("stop")){ //stop server thread. serv.suspend(); } } [/code:1:e4dded3648]
  • [quote:3fff81aa12="Deathlon"]Dit is dus waar de thread aangeroepen wordt. Terwijl ik de code hier plaatst zag ik dat de thread nog gestart werd dmv run(), omdat ik eerst Runnable implementeerde in de server-klasse. Dit heb ik later vervangen door Thread, maar run() is hier blijven staan. Nu heb ik run dus vervangen door start() en is het probleem opgelost. Wel vreemd eigenlijk, of toch niet?. Toch nog bedankt [/quote:3fff81aa12] Dit is niet vreemd, de Run() method is gewoon een method die sequentieel wordt uitgevoerd. Je moet een Thread expliciet starten met Start(), dan wordt Run() parallel uitgevoerd aan ander code. Zie http://java.sun.com/j2se/1.4/docs/api/java/lang/Thread.html

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.