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 :

Probléme deconnection avec les sockets


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
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Par défaut Probléme deconnection avec les sockets
    Bonjour à tous

    Afin de me familiariser avec les sockets j'ai réaliser deux petits programmes, un client et un serveur. Le client envoie un fichier au serveur qui le receptionne et l'enregistre sur le pc distant.
    Voici les codes :

    +Serveur

    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
    import java.io.*;
    import java.net.*;
     
    public class Serveur 
    {
     
    	static final int port = 8080;
     
    	public static void main(String[] args) throws Exception 
    	{
    		//On crée la variable de type socket attendant une connection
    		ServerSocket s = new ServerSocket(port);
    		Socket soc = s.accept();
     
    		FileOutputStream f = new FileOutputStream("la.mp3");
     		BufferedOutputStream fr = new BufferedOutputStream(f);
     		BufferedInputStream fenvoi = new BufferedInputStream(soc.getInputStream());
     		int octet = 0;
    		while (octet != -1 ) 
    		{
     			octet = fenvoi.read();
     			fr.write(octet);
    		}
     		fenvoi.close();
     		fr.close();
     		f.close();
     
    		soc.close();
    	}
    }
    +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
    27
    import java.io.*;
    import java.net.*;
     
     
    public class Client {
       static final int port = 8080 ;
     
       public static void main(String[] args) throws Exception {
            Socket socket = new Socket("xxx.xxx.xxx.xxx", port);
            System.out.println("SOCKET = " + socket);
     	File fichier = new File("ici.mp3");
     	FileInputStream f = new FileInputStream(fichier);
     	BufferedInputStream fr = new BufferedInputStream(f);
     	BufferedOutputStream fenvoi = new BufferedOutputStream(socket.getOutputStream());
    	int octet = 0;
    	while (octet != -1 ) 
    	{
     		octet = fr.read();
     		fenvoi.write(octet);
     
    	}
     	fenvoi.close();
     	fr.close();
     	f.close();	      
            socket.close();
       }
    }
    La connection et le transfert s'établissent trés bien avec l'adresse localhost. Mais dés qu'on fait ces opérations avec un pc distant à travers internet, la connection n'arrive pas à s'opérer et une exception est levée qui dit que le temps d'attente à expiré.
    Est-ce que quelqu'un à une solution pour palier à ce probléme ?

    Merci beaucoup.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    Salut, je n'ai pas regardé le code, mais si cela fonctionne en local est pas sur le wan, vérifie avant de tester que tu peux bien pinger le serveur depuis le client et inversement, et vérifie également que ton port est bien redirigé sur la machine serveur si tu es derrière un routeur/NAT

    Si tu pouvais copier l'exception précise et son stackTrace ca serait un plus

    Edit : pour tes flux utilises des blocs try { ... } finally { flux.close(); } afin de TOUJOURS fermer les flux (la socket aussi d'ailleurs !)

    Edit2 : évites de laisser une ip wan sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Exception in thread "main" java.net.ConnectException: Connection timed out
            at java.net.PlainSocketImpl.socketConnect(Native Method)
            at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
            at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
            at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
            at java.net.Socket.connect(Socket.java:519)
            at java.net.Socket.connect(Socket.java:469)
            at java.net.Socket.<init>(Socket.java:366)
            at java.net.Socket.<init>(Socket.java:179)
            at Client.main(Client.java:10)
    Ci-dessus l'exception renvoyée. Existe-t-il une maniére d'ouvrir le port surla machine distante sans faire de manip. spécifique. Ou existe-t-il un port qui permet la transimission sans être bloqué ?

  4. #4
    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
    je peut vous proposer ce cours je pense qu'il sera utile pour vos besoin
    www-sop.inria.fr/semir/personnel/Patrick.Itey/cours/reseau/pdf/java-net.pdf

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    Citation Envoyé par hebus44 Voir le message
    Ci-dessus l'exception renvoyée. Existe-t-il une maniére d'ouvrir le port surla machine distante sans faire de manip. spécifique. Ou existe-t-il un port qui permet la transimission sans être bloqué ?
    Non, si tu es bien derrière un routeur, il sera indispensable de rediriger le port vers ta machine, à moins de gérer (coté routeur et cote serveur) l'UPnP (Universal Plug and Play) mais là, je ne suis plus d'aucune aide :p

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Par défaut
    D'accord, merci pour vos réponse. Par contre le lien vers le cours ne marche pas !

Discussions similaires

  1. problèmes avec les sockets
    Par lukbutor dans le forum Réseau
    Réponses: 24
    Dernier message: 23/04/2007, 01h12
  2. Problème avec les sockets
    Par projeticq dans le forum Réseau
    Réponses: 14
    Dernier message: 19/04/2007, 09h32
  3. Problème avec les sockets et la fonction accept
    Par projeticq dans le forum Réseau
    Réponses: 6
    Dernier message: 13/04/2007, 11h37
  4. Problème d'envoie de text avec les sockets
    Par Coussati dans le forum Web & réseau
    Réponses: 6
    Dernier message: 16/09/2005, 10h26
  5. [Win32] Problème avec les sockets
    Par mickael777 dans le forum MFC
    Réponses: 3
    Dernier message: 12/08/2005, 11h15

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