Problème serveur (socket)
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 :mouarf:
Code:
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:
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:
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.