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] classe dérivant de Socket()


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Par défaut [Sockets] classe dérivant de Socket()
    Bonjour,

    Je post ici car je ne c'est pas trop où je doit le mettre mon post.

    Donc je doit établir des échanges entre 2 PCs.

    Pour cela j'ai décidé d'utiliser les Sockets.
    En établissent les diagrammes de séquence j'ai vu que j'auré des problemes avc mes objets. Donc j'ai décidé que mon client dérive de la classe Socket.

    Voici mon 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
     
    package testsocket;
     
    import java.io.* ;
    import java.net.* ;
     
    /**
     * <p>Titre : </p>
     *
     * <p>Description : </p>
     *
     * <p>Copyright : Copyright (c) 2007</p>
     *
     * <p>Société : </p>
     *
     * @author non attribuable
     * @version 1.0
     */
    public class Client extends Socket {
        public Client(String prmHost, int prmPort) {
        }
     
        public static void main(String[] args) {
            Client client = new Client("127.0.0.1", 3050);
        }
    }
    Donc voici mon ma question :
    Losque j'instancie mon objet client, je met en paramètres les 2 parametres qu'a besoin mon socket. Mais le probleme est que je ne c'est pas comment dire à mon constructeur que les 2 parametres sont pour le Socket.

    En clair je voudrai que mes 2 parametres soit envoyé au constructeur de la classe dérivée Socket. Comment peut-on faire ?


    J'espere que je me suis bien exprimé.

    J'utilise JBuilder.

    Merci par avance !

    Mes sincères salutations.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        public Client(String prmHost, int prmPort) {
            super( prmHost, prmPort );
        }
    Cela dit, est-ce vraiment nécessaire de dériver de Socket plutôt que de l'aggréger (mettre un champ socket dans ta classe Client) ?

    MAT.

  3. #3
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    1) l'appel au constructeur de la classe mère se fait via le mot clef "super".
    2) Il me semble que dériver la classe Socket est à proscrire ( je ne le fais jamais car aucun avantage, donc attente de confirmation... ).
    3) Ces qq intérogations me donnent l'impression que tu débute en java. Si tel est le cas, je te déconseille de commencer par les socket qui vont induirent tout un tas de notions très compliquées pour le débutant ( exception, synchronisations et thread, protocoles réseau etc. )

    Edit : je me suis encore fait grillé :-(

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Par défaut
    Merci pour vos réponses.

    On ne peut pas trop dire que je suis un débutant, et non plus que je suis un expert. Je suis en 2e année de BTS.
    La 1ere année j'ai appris le C++ avc les dérivations, etc. Et en fin de 1ere année et la 2nd le JAVA.

    Donc pour ma dérivation, je suis actuellement en projet. On a vu avec mes profs que la dérivation sera mieux sinon on auré des problèmes pour instancier les objets (en fait ca devré se faire dans plusieurs classes et cadres.). Donc pour éviter cela un de mes profs ma proposé de dériver de la classe Socket comme ca on aurai plus ce problème. Au niveau des sockets, j'ai réaliser en TP un chat. Donc je connais déja le fonctionnement des Sockets.

    En fait, je n'avait jamais vu les dérivation en java.

    Encore merci pour vos réponses. Je vais essayer de suite avec le mot clé super.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Par défaut
    Donc voila mon code :
    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 class Client extends Socket {
        public Client(String prmHost, int prmPort) {
          try {
            super ( prmHost, prmPort ) ;
          } catch (Exception e) {
            e.printStackTrace() ;
          }
        }
     
        public static void main(String[] args) {
            Client client = new Client("127.0.0.1", 3050) ;
        }
    }
    JBuilder met comme erreur de compilation :
    l'appel à super doit être la 1ere instruction du constructeur.

    Et quand je met ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class Client extends Socket {
        public Client(String prmHost, int prmPort) {
            super ( prmHost, prmPort ) ;
        }
     
        public static void main(String[] args) {
            Client client = new Client("127.0.0.1", 3050) ;
        }
    }
    Le compilateur met deux erreurs :
    -Erreur UnknownHostException non rapporté
    -Erreur IOException non rapporté


    Donc comment juis-je résoudre ce problème.

    Merci par avance

    Mes sincères salutations.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 46
    Par défaut
    Juste une idée mais je ne suis pas sur que se soit la meilleur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Client extends Socket {
        public Client(String prmHost, int prmPort) throws UnknownHostException, IOException  {
            super ( prmHost, prmPort ) ;
        }
     
        public static void main(String[] args) {
    // Ici tu places ton try-catch
            Client client = new Client("127.0.0.1", 3050) ;
        }
    }
    En bref, tu oblige l'appelant a intercepter ces méthodes. Comme ça ton constructeur n'a pas à s'en occuper

  7. #7
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    C'est la meilleure, ya pas d'autres méthode ( avec ce constructeur du moins ).
    Ce constructeur de Socket balançant ces exceptions, et ta classe dérivant Socket, cela donne que ta constructeur doit également blancer les exceptions.

Discussions similaires

  1. [.NET 2.0 Socket] Remoting, Winsock ou sockets en .NET ?
    Par Aspic dans le forum Framework .NET
    Réponses: 4
    Dernier message: 03/02/2007, 19h09
  2. [socket/ereg] probléme script socket
    Par UNi[FR] dans le forum Langage
    Réponses: 2
    Dernier message: 06/06/2006, 16h36
  3. Socket C : typedef int SOCKET
    Par Freed0 dans le forum Réseau
    Réponses: 18
    Dernier message: 24/02/2006, 21h08
  4. [Socket][C++]Utilisation des sockets sur internet
    Par ChriGoLioNaDor dans le forum Développement
    Réponses: 8
    Dernier message: 13/01/2006, 21h38
  5. pb constructeurs classes dérivant classe abstraite
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2003, 19h02

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