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

API standards et tierces Android Discussion :

serveur tout simple ne fronctionne pas


Sujet :

API standards et tierces Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 91
    Points : 51
    Points
    51
    Par défaut serveur tout simple ne fronctionne pas
    Bonjour,

    J'ai essayé de créer un serveur (avant d'aller plus loin)
    tout simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            ServerSocket serverSocket = null;
     
            try {
                serverSocket = new ServerSocket(7000);
                System.out.println("Server is opened");
            } catch (IOException e) {
                System.out.println("Could not listen on this port");
            }
    Le soucis c'est que j'ai bien le message "server is opened", mais le port n'est pas listé
    avec netstat.
    Personnellement, je ne suis pas très étonné car la fenêtre du pare-feu de Windows ne s'ouvre pas pour choisir
    entre réseaux privés/publics... Etrange quand même
    Le port n'est pas en cause, j'ai essayé avec de nombreux autre port, cela ne fonctionne pas non plus.

    Merci si vous avez une idée =)

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    tu fais ça dans le thread principal? tu es sûr que l'appli ne se termine pas juste après avoir créer la ServerSocket?

    as-tu un appel à accept()?
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    Merci Pill_S pour ta réponse,

    L'appli fonctionne parfaitement bien,
    le port n'est tout simplement pas ouvert.
    J'ai crée un connect() du client, mais bien évidemment, le port n'étant pas ouvert, la connection du client
    ne se fait pas.
    Tout ce qui m'étonne c'est que l'alerte du par feu ne s'affiche pas, alors qu'elle aurait du demander le type de connection autorisée (locale ou privée).
    C'est pas normal

  4. #4
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    l'import, c'est bien java.net.ServerSocket et pas une autre classe qui serait issue d'un autre package?
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    oui :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    même "serverSocket = new ServerSocket()"
    m'indique "server opened"
    En fait le serveur est initialisé mais il n'ouvre aucun port

  6. #6
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    t'es dans quel contexte? JEE, JSE, Android, etc?
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    Désolé, j'aurai dû le préciser,
    sur android via android studio

  8. #8
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Hum... je connais pas bien, mais est-ce que ça ne tourne pas dans un émulateur, avec une interface réseau spéciale, et qui donc, n'est pas directement connectée à celles reconnues par windows?

    Encore une fois, je connais très mal le monde Android, mais regarde de ce côté là...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    Non l'émulation n'est pas en cause, je l'ai lancé sur mon mobile, idem

  10. #10
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    alors là je déclare forfait... aucune idée...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  11. #11
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Attention par défaut netstat n'indique que les connections établies ou en attente de fermeture.
    Pour afficher les sockets simplement "ouvertes" il faut utiliser netstat -a


    Sinon : la gestion d'exception est crade, et il faut utiliser un try-with-ressource pour libérer proprement la socket.


    a++

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    Oui, j'ai oublié de le précisé, je fais bien un netstat -a, ou mieux encore un netstat -a | find "7000" (ou tout autre port)
    Je n'arrive pas à comprendre pourquoi Windows n'affiche pas son autorisation à ouvrir un port.
    J'ai beau parcourir le net, ServerSocket serverSocket = new ServerSocket(port) ouvre le port,

    C'est à se cogner la tête contre un mur

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Qu'est-ce que tu entends par "je l'ai lancé sur mon mobile, idem"?


    Si tu le lance dans l'émulateur, ce ne sera visible que depuis l'émulateur android, qui tourne dans une sandbox, pas exposé sous windows donc.

    Pour du code pur java, windows n'affichera pas de question firewall si par le passé on a déjà interdit à java.exe d'ouvrir des port. C'est à controller dans la configuration de ton firewall.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    Je ne me suis pas cassé la tête,
    j'affiche un texte si le client arrive à se connecter.
    Si le client n'y arrive pas à se connecter c'est que le serveur n'est pas opérationnel.
    pour ce qui est du firewall, j'y ai pensé aussi, et je l'ai viré

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    Juste une petite question :
    quand je regarde le contenu de la class ServerSocket
    une fois lancée, j'ai port = 0, et localport = 7000
    Cela veut dire que cette class ne travail qu'en local ???

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    Je viens de trouver pourquoi le client ne se connectait pas,
    en fait il manquait
    clientSocket = new Socket("localhost", 7000);
    juste avant l'accept

    Par contre, cela ne fonctionne qu'en local, dès que j'indique un autre IP, le client est rejeté.
    Et comme il s'agit d'une appli mobile, c'est pas bon.

  17. #17
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par tsumiko Voir le message
    clientSocket = new Socket("localhost", 7000);
    juste avant l'accept


    tu dis que... ton serveur... se connecte à lui-même... pour que ça marche??

    pas sûr de piger ton truc là...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    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
            serverSocket = null;
    
            try {
                serverSocket = new ServerSocket(7000);
                serverSocket.setSoTimeout(2000);
                System.out.println("Server is opened");
            } catch (IOException e) {
                System.out.println("Could not listen on this port");
            }
    
            clientSocket = null;
            try {
                clientSocket = new Socket("localhost", 7000);
                clientSocket = serverSocket.accept();
                clientSocket.setSoTimeout(15000);
                System.out.println("Client is connected");
                isClientConnected = true;
            } catch (IOException e) {
                System.out.println("Accept client failed");
            }

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu client est censé être dans une autre application, sinon on ne vois pas trop l'intérêt. Effectivement si tu ne tente pas de te connecter depuis le client, le client ne risque pas d'être connecté. Quand à l'ip que tu met dans le client, c'est l'ip où tourne le serveur que tu dois mettre dedans. Et elle doit être routable entre le client et le serveur.

  20. #20
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    d'accord avec tchize_, mais en plus de ça:

    Citation Envoyé par tsumiko Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       
            clientSocket = null;
    
                clientSocket = new Socket("localhost", 7000);
                clientSocket = serverSocket.accept();
    je vois pas trop l'intérêt de ta ligne en rouge. Tu réassignes ta socket à autre chose à la ligne juste en dessous, donc la 1ère, tu peux la virer...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

Discussions similaires

  1. Filtres tout simples qui ne fonctionnent pas
    Par cuterate dans le forum Requêtes et SQL.
    Réponses: 29
    Dernier message: 13/06/2008, 12h08
  2. Script tout simple qui ne marche pas sous IE
    Par Bleuarff dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/02/2007, 19h48
  3. Programme Perl tout simple qui ne fonctionne pas
    Par jejerome dans le forum Langage
    Réponses: 4
    Dernier message: 27/02/2006, 00h58
  4. Réponses: 1
    Dernier message: 19/02/2006, 20h52
  5. Petit truc tout simple que je comprend pas
    Par Olaf MENJI dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/11/2005, 17h56

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