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 :

java reseau + swing


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 46
    Par défaut java reseau + swing
    Salut à tous
    j'ai créé une classe qui me permet de scanner les ports de mon PC ( ouverts ou fermés)... elle fonctionne mais je crois qu'elle a quelques défauts, par exemple mes ports sont toujours fermées or ce n'est pas le cas puisque le port 8080 utilisé pour afficher des pages web est ouvert normalement :s
    De plus, je souhaiterai ajouter cette classe dans une petite interface graphique : quand je clique sur le bouton scan, je voudrai qu'il m'affiche la reponse dans un panel avec une bar de progression ..
    merci
    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
     
    package app;
     
    /**
     *
     * @author Nahla
     */
    import java.net.*;
    import java.io.*;
     
    public class Main
    {
    	static int startPort = -1, endPort = -1;
     
    	static void scan(String name)
    	{
    		try
    		{
     
    			InetAddress host = InetAddress.getByName(name);
    			System.out.println("Host Name: " + host.getHostName());
    			System.out.println("IP Address: " + toText(host.getAddress()));
     
    			if (endPort < startPort) {
    				int tmpPort = endPort;
    				endPort = startPort;
    				startPort = tmpPort;
    			}
     
    			for(int testPort = startPort; testPort <= endPort; testPort++)
    			{
    				try
    				{
    					Socket socket = new Socket(host, testPort);
    					System.out.println("Port: " + testPort + " is open");
    					socket.close();
    				}	catch(IOException ex)	{
    					System.out.println("Port " + testPort + " is closed");
    				}
    			}
     
    		}	catch(UnknownHostException ex)	{
    			System.out.println("Error: No such host");
    		}
    	}
     
    	static String toText(byte ip[])
    	{
    		StringBuffer result = new StringBuffer();
    		for(int i = 0; i < ip.length; i++)
    		{
    			if(i > 0)
    				result.append(".");
    			result.append(0xff & ip[i]);
    		}
    		return result.toString();
    	}
     
     
    	public static void main(String args[])
    	{
    		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
     
    		try
    		{
    			System.out.print("Enter Host Name: ");
    			String name = in.readLine();
    			System.out.print("Enter starting port: ");
    			try {
    				startPort = Integer.parseInt(in.readLine());
    			} catch (Exception ex) {
    				startPort = -1;
    			}
    			System.out.print("Enter ending port: ");
    			try {
    				endPort = Integer.parseInt(in.readLine());
    			} catch (Exception ex) {
    				endPort = -1;
    			}
    			System.out.flush();
    			if ((startPort != -1) && (endPort != -1)) {
    				scan(name);
    			} else {
    				System.out.println("Invalid ports");
    			}
    		}	catch(IOException ex)	{
    			System.out.println("Error");
    		}
    	}
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Tu peux designer une interface avec les outils fournis dans ton IDE Eclipse ou NetBeans.

    Il t'es possible de lancer une tache non-bloquante pour l'interface graphique en utilisant la classe SwingWorker qui permet egalement de recuperer des infos de mises-a-jour intermediaires via ses methodes :
    • publish() la tache executee dans une autre thread envoie des infos/messages intermediaires
    • process() l'interface graphique genere ces infos (par exemple les afficher.
    • setProgress() et getProgress() permet de monitorer l'avancement de la tache sur une echelle [0-100]
    • done() appelee quand la tache est terminee.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 093
    Par défaut Reponse.
    Pour répondre à votre question, c'est normale que votre code vous dise tout le temps que les ports sont fermés.
    En effet, pour tester ces derniers, vous créez un socket sur un port donné partant du principe que si ce dernier est utilisé, on lève une exception. C'est parfaitement vu et cette partie fonctionne. Par contre, lorsque vous faites socket.close(), vous faites une erreur. la méthode close() sert à fermer une connexion établie. Si cette dernière n'existe pas (ce qui est votre cas puisque vous ne connectez votre socket à rien), la péthode close() levera une exception... donc, dans les deux cas il y a exception, donc votre code affiche tout le temps port fermé...
    Il suffit de ne pas faire de close(), tout simpmlement.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    On peut faire un close() sur un socket fermé.
    Je l'ai testé, en 1.6, c'est bon.
    Tu dois avoir un autre problème, essaye de rajouter un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println(ex.toString());
    pour déterminer la cause exacte de l'exception.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 093
    Par défaut Autant pour moi...
    OButterlin a parfaitement raison. J'ai contrôlé dans le javadoc de sun, le fait de faire un close() sur un socket non connecté ne lève aucune erreur.
    Vous devriez suivre les conseils de OButterlin et clarifier la situation avec un printStackTrace.
    Les exceptions possible lors de la création d'un socket sont IOException, et SecurityException. Dans votre cas, vous exécutez votre code en ligne de commande et vous interroger la carte réseau locale, il n'y a aucune raison pour que SecurityException s'n mêle. Ca doit donc être une IOException qui se produit systématiquement lorsque vous créez votre socket. le printStackTrace permettra d'avoir plus d'information sur la source de cette erreur...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  6. #6
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 46
    Par défaut JAVA reseau
    merci pour tout les reponses .. est ce qu'est vous avez idee comment en java j'affiche les outils actifs : memoire , RAM , proceseur , les prcessus actifs ..

Discussions similaires

  1. ihm java et swing
    Par dahmane04 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 02/03/2008, 02h50
  2. Réponses: 2
    Dernier message: 11/01/2008, 11h05
  3. java et swing - bureau graphique nécessaire ?
    Par wrapx dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 16/10/2006, 07h31
  4. cherche lien appli java complete swing
    Par lepetitjoe dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 07/09/2006, 23h11
  5. [Réseau][Stratégie]pb appli Java réseau
    Par greg_one dans le forum Général Java
    Réponses: 3
    Dernier message: 08/08/2005, 17h11

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