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 :

Sockets pour récupération des adresses IP


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Mars 2011
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 230
    Par défaut Sockets pour récupération des adresses IP
    salut je faire une application qui scan les adresses ip dans le réseaux je veux travaillé avec les sockets j'ai crée deux classes client/serveur le probléme coté client toujours il m'affiche le client est en cours!
    class client
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package test;
     
    /**
     *
     * @author jaafar
     */
    import java.io.*;
    import java.net.*;
    import java.io.File;
    import java.net.*;
    import java.util.Calendar;
    import java.util.Date;
    import java.sql.*;
     
    public class Client {
     
        public Client() {   }
        public static void main(String args[]) {
     
     
       String namePC;
           String systèmedexploitation;
         long free;
          int numberOfProcessors;
          Date dateheur;
          long EspacedisqueTotal;
         long EspacedisqueUtiliser;
          long EspacedisqueLibre;
         String typesystème;
         Connection connexion;
            boolean statement;
     
         System.out.println("ceci un test");
         try{     
         Socket socket = new Socket("127.0.0.1", 3003);
     
     
         BufferedReader plec = new BufferedReader(
                                   new InputStreamReader(socket.getInputStream())
                                  );
     
     
         BufferedReader pl = new BufferedReader(new InputStreamReader(System.in));
         PrintWriter pred = new PrintWriter(
                                 new BufferedWriter(
                                    new OutputStreamWriter(socket.getOutputStream())), 
                                 true);
     
     
                systèmedexploitation =System.getProperty("os.name");
        typesystème= System.getProperty("os.arch");
        File file = new File( "c:");
        EspacedisqueTotal = file.getTotalSpace();
        EspacedisqueUtiliser = file.lastModified();
        EspacedisqueLibre = file.getFreeSpace();
        numberOfProcessors = Runtime.getRuntime().availableProcessors();
        free = Runtime.getRuntime().freeMemory();
        dateheur=Calendar.getInstance().getTime();
        File file1 = new File( "C:\\Program Files" );
           File[] files = file1.listFiles();
     
                                String s="";
                                for ( int fileInList = 0 ; fileInList < files.length; fileInList++)
     
            s+=files[fileInList].getName()+"  ";
     
     
        //System.out.println(plec.readLine());
        pred.println(systèmedexploitation+"_"+typesystème+"_"+EspacedisqueTotal+"_"+EspacedisqueUtiliser+"_"+EspacedisqueLibre+"_"+numberOfProcessors+"_"+free+"_"+s);
     
          System.out.println(plec.readLine());
     
         socket.close();
     
         }
         catch(IOException e){
         }
     
     
     
     
        }
     
     
    }
    class serveur
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package test;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.InetAddress;
    import java.net.ServerSocket;
    import java.net.Socket;
     
    /**
     *
     * @author jaafar
     */
     
    public class serveur extends Object{
     
    	protected ServerSocket socketEcoute;
    	protected Socket socketService;
    	protected InputStream entreeSocket;
    	protected OutputStream sortieSocket;
     
     
    	// constructeur, créer un Serveur
    	public serveur(int numPort){
    		try{
    		//création du socket d'écoute (port numPort)
    		socketEcoute = new ServerSocket(numPort);
     
    		}catch (Exception ex){
          			// erreur de connexion
          			System.err.println("Une erreur est survenue : "+ex);
          			ex.printStackTrace();
        		}	
    	}
     
    	// attente d'une connexion
    	public void attenteConnexion(){
    		try{
    			// attente d'une demande de connexion
    			socketService = socketEcoute.accept();
     
    			System.out.println("Nouvelle connexion : " + socketService); // pour test...
     
    			// récupération des flux d'entrée/sortie de la socket de service
    			entreeSocket = socketService.getInputStream();
    	        	sortieSocket = socketService.getOutputStream();		
     
    		}catch (IOException ex){
              		// fin de connexion
              		System.out.println("Une erreur est survenue : "+ex);
              		ex.printStackTrace();
    		}	
    	}
     
    	// methode qui retourne la chaine de caractere recue dans la socket ainsi que l'adresse de l'expéditeur, dans un 
    	// tableau de String, 1er element du tableau = adresse, 2eme element = message 
    	public String[] receptionMessage(){
     
    		String mess="";
    		String strIpClient="";
    		String tabMess[]=null;
     
    		tabMess=new String[2];
     
    		try{
     
    			// on charge le contenu du scoket dans un BufferedReader	
    			BufferedReader br = new BufferedReader(new InputStreamReader(entreeSocket));
    			// on lit le contenu du buffer
    			mess = br.readLine();
     
     
    		// afficher l'ip du client  ???
    			InetAddress ipClient=socketService.getInetAddress();
    			strIpClient=ipClient.getHostAddress();
     
     
    			// System.out.println("reception message de "+strIpClient+" : "+mess);	// on fait deja cette affichage dans l'appelant									
     
    		}catch (IOException ex){
              		// fin de connexion
              		System.out.println("Une erreur est survenue : "+ex);
      			ex.printStackTrace();
    		}	
     
    		tabMess[0]=strIpClient;
    		tabMess[1]=mess;
     
    		return tabMess;	
     
    	}
    }

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ensimag
    Inscrit en
    Octobre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ensimag
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 57
    Par défaut
    je crois que ton problème vient du fait que tu appel pas attenteconnexion() dans le constructeur de ton serveur, ni réceptionMessage() d'ailleurs !!!

    par contre ton client s’exécute bien parce qu’il est dans le main

  3. #3
    Membre très actif
    Inscrit en
    Mars 2011
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 230
    Par défaut
    Citation Envoyé par mouddene Voir le message
    je crois que ton problème vient du fait que tu appel pas attenteconnexion() dans le constructeur de ton serveur, ni réceptionMessage() d'ailleurs !!!

    par contre ton client s’exécute bien parce qu’il est dans le main
    j'ai fait un autre changement mais le probléme encore que il m'affiche le client est en cours en boucle infinit
    class client
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package test;
     
    /**
     *
     * @author jaafar
     */
    import java.io.*;
    	import java.net.*;
    	import java.io.File;
    	import java.util.Calendar;
    	import java.util.Date;
    	import java.lang.management.ManagementFactory;
    public class ClientFini {
     
    	    public ClientFini() {}
    	    public static void main(String args[]) {
     
    	   //Déclaration des variables
    	    	int compteur=5;
    	      int sport=3078;
    	      final String adress="192.168.1.2";
    	      String dateheur;
    	      String repertoirecourante;
    	      String dossierutilisateur;
    	      String systèmedexploitation;
    	      String versionsystème;
    	      String archsystème;
    	      long EspacedisqueTotal;
    	      long EspacedisqueUtiliser;
    	      long EspacedisqueLibre;
    	      long totalMemory;
    	      long freeMemory;
    	      String repertoire="";
    	      String programmes="";
    	      Socket socket = null;
     
    	  int nbrprocessor;
     
    	   while(true)
    	     try{  
    	      //****************************  création d'un socket client  ****************************************
     
    	     System.out.println("Le client est en cours");
    	     socket = new Socket(adress, sport);
    	     BufferedReader plec = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    	     PrintWriter pred = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
     
     
    	     //**********************  LES méthode de récupération des données local  *****************************
     
     
    	     dateheur=Calendar.getInstance().getTime().toLocaleString();
    	     systèmedexploitation =System.getProperty("os.name");
    	     dossierutilisateur=System.getProperty("user.home").replace("\\","/");
    	     versionsystème=System.getProperty("os.version");      
    	     archsystème= System.getProperty("os.arch");
    	     repertoire=System.getProperty("user.dir").replace("\\","/");
     
     
     
    	     			//******accés au disque dur c: puis récupération des information du disque.******
     
    	  			File file = new File( "C:");
    	  			EspacedisqueTotal =  file.getTotalSpace()/1024/1024/1024;
    	  			EspacedisqueLibre = file.getFreeSpace()/1024/1024/1024;
    	  			EspacedisqueUtiliser =(EspacedisqueTotal- EspacedisqueLibre);
     
     
    	  									//************//
     
    	  	com.sun.management.OperatingSystemMXBean mxbean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();	
    	     totalMemory =mxbean.getTotalPhysicalMemorySize();
    	     freeMemory = mxbean.getFreePhysicalMemorySize();
    	     nbrprocessor=mxbean.getAvailableProcessors();
     
     
     
     
    	     			//******liste des programmes installés sur l'ordinateur.******
     
    	  File file1 = new File( "C:\\Program Files" ); 
    	  File[] files = file1.listFiles();
     
    	     for ( int fileInList = 0 ; fileInList < files.length; fileInList++)
    	     programmes+=files[fileInList].getName()+"/";
     
     
    	   //**************************** adress mac***************************
    	   //******************************************************************
     
    	     String am="";
    	      NetworkInterface  ni = NetworkInterface.getByInetAddress(InetAddress.getLocalHost());
    	      if (ni != null) {
    	      byte[] mac = ni.getHardwareAddress();
    	      if (mac != null) 
    	      {
     
    	    //************************format d'affichage de l'adresse mac*****************************
    	       try{
    	       for (int i = 0; i < mac.length-1; i++) 
    	        am+=String.format("%02X",mac[i])+"-";
    	       am+=String.format("%02X",mac[mac.length-1]); 
    	       }
    	       catch(Exception e)
    	       {
    	        System.out.println(e.getMessage());
    	       }
     
    	      }                    
    	      else
    	      System.out.println("Address doesn't exist or is not accessible.");
     
    	     }
    	     else
    	      System.out.println("Network Interface for the specified address is not found."); 
     
     
    	      //****************************                            ******************************
     
    	                   /*format d'envoie des résultats du socket client vers le serveur */
     
    	    pred.println(dateheur+"_"+am+"_"+systèmedexploitation+"_"+versionsystème+"_"+archsystème+"_"+nbrprocessor+"_"+repertoire+"_"+dossierutilisateur+"_"+EspacedisqueTotal+"_"+EspacedisqueUtiliser+"_"+EspacedisqueLibre+"_"+totalMemory+"_"+freeMemory+"_"+programmes);
    	  plec.readLine();
    	    socket.close();
     
     
     
    	      //-------------------------------------------- scan port ------------------------------------------
     
     
    	    new Thread(){
    	    public void run()
    	    {
    	     int pport=3016;//initialisation du numéro de port
    	     int port=3009;
    	    String hostname = null;
    	    PrintWriter pred=null;
    	    Socket socket=null;
    	            for (port = 70; port <100; port++) 
    	               try {
     
    	                 socket = new Socket(adress, pport);
     
    	                      pred = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
     
     
    	          InetAddress remote = InetAddress.getLocalHost();
     
    	             hostname = remote.getHostName();
    	                 Socket s = new Socket(remote, port);
     
    	                 pred.println("Le port " + port +"de la machine " +hostname+" est ouvert");
     
    	                 s.close();
     
    	               }
     
    	               catch (IOException ex) {
    	            	   try
    	            	   {
    	                pred.println(" Le port " + port + " de la machine " + hostname+" est fermé"); 
    	            	   }catch(Exception f){
     
    	            	   }
    	               }
     
    	               try {
    	                pred.println("con");	//*****message  d'arrêt du socket du scan des ports*****
     
    	    socket.close();
    	   } catch (IOException e) {
     
    	    e.printStackTrace();
    	   }
     
    	     }
    	    }.start();
     
    	    //----------------------------------------------------------
     
     
    	      //Fermeture de socket
     
    	     socket.close();
     
    	     }
    	     catch(IOException e){
    	    	 try
    	    	 {
    	    		 socket.close(); 
    	    	 }catch(Exception e1)
    	    	 {
     
    	    	 }
    	    	 try {
    	    		 compteur--;
    	    		 if (compteur==0)
    	    		 {
    	    		compteur=5;	 
    	    		Thread.currentThread().sleep(10000);
    	    		 }
    	    		 else
    				Thread.currentThread().sleep(4000);//***le client réessaie de se connecter chaque 4s tant que le serveur n'est pas connecté.
    				System.out.println("...Loading");
    			} catch (InterruptedException e2) {
     
    			}
    	     }
    	    }}
    class serveur
    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
    42
    43
    44
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package test;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.io.PrintWriter;
     
    public class Serveur {
     
    	public static void main(String[] zero) {
     
    		ServerSocket socketserver  ;
    		Socket socketduserveur ;
    		BufferedReader in;
    		PrintWriter out;
     
    		try {
     
    			socketserver = new ServerSocket(2009);
    			System.out.println("Le serveur est a l'écoute du port "+socketserver.getLocalPort());
    			socketduserveur = socketserver.accept(); 
     
    			out = new PrintWriter(socketduserveur.getOutputStream());
    		        out.println("Vous êtes connecté zéro !");
    		        out.flush();
     
    		        socketduserveur.close();
    		        socketserver.close();
     
    		}catch (IOException e) {
     
    			e.printStackTrace();
    		}
    	}
     
    }

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ensimag
    Inscrit en
    Octobre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ensimag
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 57
    Par défaut
    pour résoudre ton problème tu dois changer ton sport dans client à 2009 au lieu de 30xx le serveur est à l’écoute sur 2009.
    ceci fait ton serveur répondra une seule fois puisque il n'y a pas de while ou de thread client pour le traitement.
    j'imagine que ton application n'est pas pour des fins biens tu veux récupérer des données sur une machine distante mais bon si c'est résolu

  5. #5
    Membre très actif
    Inscrit en
    Mars 2011
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 230
    Par défaut
    Citation Envoyé par mouddene Voir le message
    pour résoudre ton problème tu dois changer ton sport dans client à 2009 au lieu de 30xx le serveur est à l’écoute sur 2009.
    ceci fait ton serveur répondra une seule fois puisque il n'y a pas de while ou de thread client pour le traitement.
    j'imagine que ton application n'est pas pour des fins biens tu veux récupérer des données sur une machine distante mais bon si c'est résolu
    c'est le même problème j'ai changé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    socket = new Socket(adress,2009);
    et quand je run le serveur il y une erreur d'exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ava.net.BindException: Address already in use: JVM_Bind
    	at java.net.DualStackPlainSocketImpl.bind0(Native Method)
    	at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:96)
    	at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
    	at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:175)
    	at java.net.ServerSocket.bind(ServerSocket.java:376)
    	at java.net.ServerSocket.<init>(ServerSocket.java:237)
    	at java.net.ServerSocket.<init>(ServerSocket.java:128)
    	at test.Serveur.main(Serveur.java:27)
    BUILD SUCCESSFUL (total time: 0 seconds)

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ensimag
    Inscrit en
    Octobre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ensimag
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 57
    Par défaut
    oui c'est normale car l'adresse est toujours utilisée , donc pour résoudre ce problème soit tu change de port, ou tu arrêtes le thread en cours java via ton gestionnaire de tâches .

Discussions similaires

  1. [VBS] Requete WMI pour récupération des adr. DNS
    Par fredsg dans le forum VBScript
    Réponses: 1
    Dernier message: 07/08/2009, 12h03
  2. Réponses: 4
    Dernier message: 04/05/2009, 15h22
  3. Récupération des adresses MAC
    Par Jean-Jacques Engels dans le forum Web & réseau
    Réponses: 9
    Dernier message: 21/04/2009, 16h31
  4. Réponses: 11
    Dernier message: 30/06/2008, 13h15
  5. [VBA][outlook] récupération des adresses mail
    Par arno2004 dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 27/07/2004, 18h48

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