Le début de la méthode () est indéfini pour le ServerWorker type ... (java Runnable)
-
11-10-2019 - |
Question
Ok, je l'ai fait avec filetage Java avant, mais quelque chose que je pense, devrait être correct me donne cette erreur
package com.mdog.tcpserver; import java.net.*; import java.io.*; public class ServerDriver { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; boolean listening = true; /* bind welcome socket to port */ try { serverSocket = new ServerSocket(1313); } catch (IOException e) { System.err.println("Could not listen on port: 1313."); System.exit(1); } /* assign thread to each client */ while(listening){ new ServerWorker(serverSocket.accept()).start(); } /* close the socket and quit */ serverSocket.close(); return; } }
---------package com.mdog.tcpserver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class ServerWorker implements Runnable { private Socket socket = null; public ServerWorker(Socket s){ super(); this.socket = s; } public void run() { (stuff happens) } }
L'erreur est sur cette ligne "nouvelle ServerWorker (serverSocket.accept ()) start ();". et il dit ... « Le début de la méthode () n'est pas défini pour le type ServerWorker »
La solution
new Thread(new ServerWorker(serverSocket.accept())).start()
http: //download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html#start%28%29
Autres conseils
Désolé, je ne sais pas comment ajouter des commentaires aux commentaires. Mais
Démarrage nouveau thread dans un cycle while ??? Ce code va se planter dans une seconde, je suppose que
est erroné. accept (). nouveaux threads sont créés (ou seraient comme la bonne réponse des points déjà remis) pour chaque nouveau socket (aka connexion client). Il est faux de rien avec lancer de nouvelles discussions dans un while contre toute autre boucle tant qu'il est approprié dans ce cas il est.