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

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs Discussion :

Problème avec ServerSocket


Sujet :

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 3
    Par défaut Problème avec ServerSocket
    Bonjour, je suis sur un serveur sous Debian Squeeze AMD64 et je n'arrive pas à faire marcher le ServerSocket comme je le fais sous Windows ou n'importe où ailleurs... Pourriez-vous m'aider à trouver le problème qui ne se trouve probablement pas dans la source vue que j'utilise ServerSocket depuis un moment sur d'autres OS... J'utilise cette version de Java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java version "1.6.0_20"
    Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
    Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
    Voici ma source de test :
    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
    import java.io.IOException;
    import java.net.ServerSocket;
     
    public class TestServer extends ServerSocket {
    	public TestServer(int port) throws IOException {
    		super(port);
    	}
    	public static void main(String args[]) {
    		try {
    			TestServer server = new TestServer(8888);
    			System.out.println("server started");
    			server.accept();
    			System.out.println("socket accepted");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    Voila j'ai fait au plus simple, le résultat est toujours le même, ça se lance bien et m'affiche server started mais peut importe ce que je fais, il n'affiche jamais socket accepted et ne produit aucune erreur, le programme tourne toujours... Pour le tester, je visite http://127.0.0.1:8888/ ou http://192.168.0.101:8888/ et rien de se passe. Le problème ne vient pas du navigateur puisque depuis un autre ordi c'est pareil. Quand je fais un telnet 127.0.0.1 8888 en console, j'obtiens dans la console : telnet: Unable to connect to remote host: Connection refused mais le programme en Java n'affiche toujours rien.

    Voila, si quelqu'un aurait une idée de la cause du problème ou une solution... Je peux faire tous les tests que vous voulez... C'est rare que je demande de l'aide sur un forum mais là je vois vraiment pas, j'ai aussi essayé de lancer le programme Java en root, pareil.

    Merci de votre aide,
    Cymoud

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    netstat -l -p -n | grep 8888
    tu devrais voir le process qui attends sur le numéro de port. Tu peux nous dire ce que ça sort? Il n'y aurais pas aussi un filtrage genre iptable ou autre règle de firwalling qui rendrait ce port inaccessible?

  3. #3
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par Cymoud Voir le message
    Bonjour, je suis sur un serveur sous Debian Squeeze AMD64 et je n'arrive pas à faire marcher le ServerSocket comme je le fais sous Windows ou n'importe où ailleurs... Pourriez-vous m'aider à trouver le problème qui ne se trouve probablement pas dans la source vue que j'utilise ServerSocket depuis un moment sur d'autres OS... J'utilise cette version de Java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java version "1.6.0_20"
    Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
    Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
    Voici ma source de test :
    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
    import java.io.IOException;
    import java.net.ServerSocket;
     
    public class TestServer extends ServerSocket {
    	public TestServer(int port) throws IOException {
    		super(port);
    	}
    	public static void main(String args[]) {
    		try {
    			TestServer server = new TestServer(8888);
    			System.out.println("server started");
    			server.accept();
    			System.out.println("socket accepted");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    Voila j'ai fait au plus simple, le résultat est toujours le même, ça se lance bien et m'affiche server started mais peut importe ce que je fais, il n'affiche jamais socket accepted et ne produit aucune erreur, le programme tourne toujours... Pour le tester, je visite http://127.0.0.1:8888/ ou http://192.168.0.101:8888/ et rien de se passe. Le problème ne vient pas du navigateur puisque depuis un autre ordi c'est pareil. Quand je fais un telnet 127.0.0.1 8888 en console, j'obtiens dans la console : telnet: Unable to connect to remote host: Connection refused mais le programme en Java n'affiche toujours rien.

    Voila, si quelqu'un aurait une idée de la cause du problème ou une solution... Je peux faire tous les tests que vous voulez... C'est rare que je demande de l'aide sur un forum mais là je vois vraiment pas, j'ai aussi essayé de lancer le programme Java en root, pareil.

    Merci de votre aide,
    Cymoud
    Salut.

    Y'aurait pas une histoire de Firewall là dessous?

    Edit: grillé

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 3
    Par défaut
    Ah bah je crois avoir trouvé le problème du coup avec netstat... Je connaissais netstat mais je ne savais pas qu'il donnait aussi les ports en écoute, jpensais qu'il montrait que les ports qui communiquent... En fait, la seule interface ouverte sur le port 8888 est en IPv6... Savez-vous comment changer ça en Java ? Ou écouter les 2 en même temps ? Je ne pense pas qu'il y ai un problème de firewall car je n'en ai ni installé ni configuré. Voila mon netstat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Connexions Internet actives (seulement serveurs)
    Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
    tcp        0      0 *:ftp                   *:*                     LISTEN      -               
    tcp        0      0 *:ssh                   *:*                     LISTEN      -               
    tcp        0      0 *:https                 *:*                     LISTEN      -               
    tcp        0      0 localhost:9000          *:*                     LISTEN      -               
    tcp        0      0 localhost:mysql         *:*                     LISTEN      -               
    tcp        0      0 *:www                   *:*                     LISTEN      -               
    tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      -               
    tcp6       0      0 [::]:8888               [::]:*                  LISTEN      14073/java      
    tcp6       0      0 [::]:https              [::]:*                  LISTEN      -               
    tcp6       0      0 [::]:www                [::]:*                  LISTEN      -
    J'ai pas mis le -n, c plus joli :p mais on comprend aussi bien, jme trompe pas pour l'IPv6 ? Tiens jV essayer : ça marche en IPv6 !
    Maintenant que j'en parle, il me semble que j'avais déjà rencontré ce PB ya longtemps...
    Edit: le truc étrange c'est que j'avais fais un getHostname ou un truc du genre pour afficher l'adresse qui écoute parce que jpensais à l'IPv6 mais il m'affichait bien 0.0.0.0 comme sous windows...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 3
    Par défaut
    http://www.developpez.net/forums/d88...ian-ipv6-only/

    Voila les solutions au problème que j'ai trouvé, n'y a-t-il pas une solution directement dans le code pour permettre les IPv4 comme v6 ?
    Sinon en attendant un truc plus portable, je vais changer la config de mon serveur debian avec le fichier /etc/sysctl.d/bindv6only.conf configuré à 0.
    Merci pour vos réponses rapides.

Discussions similaires

  1. POCO: problème avec ServerSocket::select()
    Par karastojko dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 16/05/2011, 14h05
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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