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();
		}
	}
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();
			}
		}
 
	}
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...

problème n°2(et le dernier ):

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();
}
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.

Merci de vos généreuses réponses.