Bonjour, je suis entrain de faire un serveur, sur lequel je me connecte avec le shell linux par la commande telnet.
Ce serveur est censé être une copie de "chargen" qui envoie à l'infinie les 100 caractères ascii affichable.
Voici le code, ensuite viendrons les problèmes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public static void main(String args[]) throws UnknownHostException, IOException{ ServerSocket server; try { server=new ServerSocket(9876, 10, InetAddress.getLocalHost()); Thread t = new Thread(new Accepter_clients(socket)); t.start(); } catch (IOException e) { e.printStackTrace(); } }Voici mon problème n°1, j'ai mis un thread dans le main, normalement mon serveur peut être accessible par plusieurs shell en même temps, mais non... par contre quand je mets 2 thread, la je peut me connecter 2 fois, 3 thread = 3 fois etc... Je pense que j'ai pas trop compris...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 class Accepter_clients implements Runnable { private ServerSocket socketserver; private Socket socket; public Accepter_clients(ServerSocket s){ socketserver = s; } public void run() { PrintWriter out; InputStream in; try { while(true){ socket = socketserver.accept(); out = new PrintWriter(socket.getOutputStream()); while(true){ for(int i=32; i<127; i++){ out.print((char)i); } out.flush(); } } } catch (Exception e) { e.printStackTrace(); } } }
problème n°2(et le dernier ):
Je ne sais pas quoi mettre a la place de ce while(true), pour faire en sorte que je quitte cette boule, au moment ou le client appuie sur (CTRL+ALTGR+]) ce qui le déconnecte du serveur telnet, et donc me permettra de fermer le socket après cette boucle. Ou même si le client a une panne internet ou je ne sais quoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 while(true){ for(int i=32; i<127; i++){ out.print((char)i); } out.flush(); }
Merci de vos généreuses réponses.
Partager