IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Problème serveur (socket)


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 1
    Par défaut 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

    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.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    1) il faut démarrer des thread après avoir fait le socket accept:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while(true){
       Socket socket = serverSocket.accept(); // un nouveau client
       new Thread(new GestionnaireClient(socket)).start(); // vite un thread pour lui
    }
    2) les appels de méthodes sur out lanceront des exceptions quand le client distant sera déconnecté.

Discussions similaires

  1. [FLASH MX2004] [XMLSocket] Problème avec serveur socket php
    Par cocodunombril dans le forum Flash
    Réponses: 4
    Dernier message: 03/04/2009, 02h10
  2. Problème communication sockets serveur mutli-client
    Par muad'dib dans le forum Réseau
    Réponses: 5
    Dernier message: 17/05/2007, 02h21
  3. Réponses: 1
    Dernier message: 14/03/2007, 07h25
  4. problème de serveur socket
    Par hiul dragonfel dans le forum MFC
    Réponses: 3
    Dernier message: 01/06/2006, 11h56
  5. Mysql ne se lance pas problème de socket
    Par Riko dans le forum Installation
    Réponses: 5
    Dernier message: 05/02/2004, 09h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo