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 :

Probleme Class Socket


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut Probleme Class Socket
    Bonjour tout le monde, je suis entrain de programmer une interface graphique sous netbeans , et j'ai un ptit soucis, enfet le probleme c pas dans l'interface graphique mais dans le code. je vous montre un bout de 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
    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
    private void Valider1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            Socket SocketClient = null;
     
            try {
     
                SocketClient = new Socket(IPServeur.getText(), 502);
     
            } catch (UnknownHostException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
     
     
     
            String a = EsclaveA.getText();
            String b = NombreMotA.getText();
            String c = AdresseMotA.getText();
     
            int A = Integer.parseInt(a);
            int B = Integer.parseInt(b);
            int C = Integer.parseInt(c);
     
            ClientClass lecture = new ClientClass();
     
            int [] z = lecture.ReqLectureMotEntree(SocketClient,A,C,B);
     
            Valider1.addActionListener(this);
     
     
            for (int i =0; i<9+(2*B);i++) 
             System.out.print(z[i]+"  ");
     
            StringBuffer text = new StringBuffer();
     
    for (int i =0; i<9+(2*B);i++) {
       text.append(z[i]+"  ");
    }
     
      ReponseLecture.setText("La réponse du serveur est :  "+text.toString());
     
        }
    pour la méthode ReqLectureMotEntree(Socket, int, int int) c moi qui l'a crée.

    Donc le probleme c'est que je souhaite ouvrir le socket en dehors de cette classe. Mais une fois que je l'ouvre dehors elle n'est plus reconnu dedans c'est pour ça que je l'ai ajouté à l'interrieur de la calsse. Est ce qu'il y a moyen de l'ouvrir en dehors de la classe mais l'utiliser dedans sans prob.
    Merci.

  2. #2
    Membre confirmé Avatar de faico
    Inscrit en
    Août 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 242
    Par défaut
    Salam,

    SocketClient est une référence, je vois pas ou se trouve ton problème tu peux passer cette référence a n'importe quelles méthodes .

  3. #3
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut
    est ce que vous avez bien fait vos import a chaque fois vous faite apelle a votre class.
    si ne c'est pas ca le probleme est ce que vous pouvez vous expliquez plus

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut
    Je vais essayer de bien expliquer mon probleme, en fait j'essaye de creéé un client serveur Modbus, Le client Doit crée une connexion vers le serveur, envoyer une ou plusieurs commandes et fermer la connexion, mais ce que mon programme fait c'est que pour chaque commande il crée une nouvelle conexion,

    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
    private void Valider5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            Socket SocketClient = null;
     
            try {
     
                SocketClient = new Socket(IPServeur.getText(), 502);
     
            } catch (UnknownHostException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
     
     
     
            String a = EsclaveE.getText();
            String b = NombreMotE.getText();
            String c = AdresseMotE.getText();
     
            int A = Integer.parseInt(a);
            int B = Integer.parseInt(b);
            int C = Integer.parseInt(c);
     
            ClientClass lecture = new ClientClass();
     
            int [] z = lecture.ReqEcritureMotSortie(SocketClient,A,C,B,Donnee.getText());
     
            Valider5.addActionListener(this);
     
     
            for (int i =0; i<12;i++)
                System.out.print(z[i]+"  ");
     
            StringBuffer text = new StringBuffer();
     
            for (int i =0; i<12;i++) {
                text.append(z[i]+"  ");
            }
     
            ReponseLecture4.setText("La réponse du serveur est :  "+text.toString());
     
        }                                        
     
        private void Valider3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            Socket SocketClient = null;
     
            try {
     
                SocketClient = new Socket(IPServeur.getText(), 502);
     
            } catch (UnknownHostException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
     
     
     
            String a = EsclaveC.getText();
            String b = NombreMotC.getText();
            String c = AdresseMotC.getText();
     
            int A = Integer.parseInt(a);
            int B = Integer.parseInt(b);
            int C = Integer.parseInt(c);
     
            ClientClass lecture = new ClientClass();
     
            int [] z = lecture.ReqLectureBitEntree(SocketClient,A,C,B);
     
            Valider3.addActionListener(this);
     
     
            StringBuffer text = new StringBuffer();
     
            for (int i =0; i<9+(2*B);i++) {
                text.append(z[i]+"  ");
            }
     
            ReponseLecture2.setText("La réponse du serveur est :  "+text.toString());
        }

    Donc comme vous l'avez remarqué dans le programme, chaque fois j'ouvre un nouvel socket, ce que je souhaite faire, c'est definir la socket et l'ouvrir en dehors des actionPerformed et l'utiliser dedans, comme ça je communiquerai toujours avec une meme et seule connexion.
    Merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut
    je vais essayer de vous donner un exemple, enfet c'est ce que j'ai essayé de faire mais il ne marche pas.



    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
    public static void main(String[]args)  {
    
    Socket SocketClient = null;
            
            try {
                
                SocketClient = new Socket(IPServeur.getText(), 502);
                
            } catch (UnknownHostException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
    
    }
    
    private void Valider2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            
            
            String a = EsclaveB.getText();
            String b = NombreMotB.getText();
            String c = AdresseMotB.getText();
            
            int A = Integer.parseInt(a);
            int B = Integer.parseInt(b);
            int C = Integer.parseInt(c);
            
            ClientClass lecture = new ClientClass();
            
            int [] z = lecture.ReqLectureMotSortie(SocketClient,A,C,B);
            
            Valider2.addActionListener(this);
            
            
            for (int i =0; i<9+(2*B);i++)
                System.out.print(z[i]+"  ");
            
            StringBuffer text = new StringBuffer();
            
            for (int i =0; i<9+(2*B);i++) {
                text.append(z[i]+"  ");
            }
            
            ReponseLecture1.setText("La réponse du serveur est :  "+text.toString());
        }                                        
        
        private void Valider1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
                   
            
            String a = EsclaveA.getText();
            String b = NombreMotA.getText();
            String c = AdresseMotA.getText();
            
            int A = Integer.parseInt(a);
            int B = Integer.parseInt(b);
            int C = Integer.parseInt(c);
            
            ClientClass lecture = new ClientClass();
            
            int [] z = lecture.ReqLectureMotEntree(SocketClient,A,C,B);
            
            Valider1.addActionListener(this);
            
            
            for (int i =0; i<9+(2*B);i++)
                System.out.print(z[i]+"  ");
            
            StringBuffer text = new StringBuffer();
            
            for (int i =0; i<9+(2*B);i++) {
                text.append(z[i]+"  ");
            }
            
            ReponseLecture.setText("La réponse du serveur est :  "+text.toString());
            
        }                                        
        
        
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new ClientModBusTcp().setVisible(true);
                }
            });
        }
    Donc là ce que j'ai fait c'est que j'ai definit et ouvert le socket dans le public static void, ensuite je l'ai utilisé dans les deux actions performed, mais le probleme c'est que une fois que j'ai quitté le public static void, le socket n'est plus reconnu. Donc je souhaite qu'il soit reconnu partout. J'espere que j'ai été clair.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut
    A l'aide

Discussions similaires

  1. hibernate problem (classe not mapped)
    Par oughlad dans le forum Hibernate
    Réponses: 11
    Dernier message: 25/06/2007, 19h57
  2. [VB6] Probleme de socket
    Par johnson95 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 09/06/2006, 09h39
  3. Probleme de socket
    Par Pragmateek dans le forum C++
    Réponses: 14
    Dernier message: 11/03/2006, 22h37
  4. probleme classe et chaines de caractères
    Par oilv dans le forum C++
    Réponses: 12
    Dernier message: 18/02/2006, 10h01
  5. [Debutant] Probleme connection socket
    Par sorry60 dans le forum Réseau
    Réponses: 38
    Dernier message: 12/11/2005, 11h46

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