Partage
  • Partager sur Facebook
  • Partager sur Twitter

constructeur Socket(String, int, String, int) introuvable

Sujet résolu
    21 septembre 2011 à 10:23:28

    Bonjour,
    voici ce que je voit dans ce tuto :

    Citation

    Il est possible également de spécifier son adresse local comme troisième paramètre et le numéro de port local :

    Socket socket = new Socket(adresse_distante, port_distant, adresse_locale, port_locale)
    




    bon, très bien, sauf que chez moi, Eclipse ne trouve pas ce constructeur !!
    il ne tolère que deux paramètres !
    ça m'étonne beaucoup ... j'ai bien vérifier que j’utilisai la bonne classe et tout, rien faire.
    Voici le code complet :
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    import javax.swing.JOptionPane;
    
    
    public class client1 {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    
    		try {
    		
    			System.setProperty("java.security.policy", "D:/Socket/security.policy");
    			Socket s = new Socket("monip", 45600, "ip_locale", 45500);
    
    			JOptionPane.showMessageDialog(null, "La connexion s'est déroulée avec succès au serveur !!");
    			s.close();
    		} catch (UnknownHostException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "une erreur est survenue lors de la connexion au serveur.");
    			
    		}
    	}
    
    }
    


    Normalement, Eclipse ne devrait pas digérer ... étonnant tout de même, j'ai pourtant bien importé le package .net et pas un autre (il n'y en a pas d'autre alors ...)

    où est le problème ?!

    merci d'avance.
    NB

    je suis sûr que c'est une faute grosse comme un immeuble ... mais pas moyen ...
    • Partager sur Facebook
    • Partager sur Twitter
      21 septembre 2011 à 10:39:30

      En principe effectivement, ça fonctionne :
      => http://download.oracle.com/javase/1.4. [...] t/Socket.html

      Mais comme tu peux le voir sur ce lien, l'adresse locale à fournir en 3eme paramètre n'est pas une String, mais une objet du type InetAddress.
      C'est là que ça coince dans ton code.
      • Partager sur Facebook
      • Partager sur Twitter
        21 septembre 2011 à 11:29:14

        en effet, c'était ceci, merci beaucoup ... je devrais prendre l'habitude de faire un tour à la doc même si j'aime pas trop ... :honte:

        Sinon, il n'y a plus de pb de compilation, mais pas moyen de faire communiquer deux PC distant ... toujours une exception connection refused ...
        voici mes deux codes :

        serveur :
        import java.io.IOException;
        import java.net.InetAddress;
        import java.net.ServerSocket;
        import java.net.Socket;
        import java.net.UnknownHostException;
        
        import javax.swing.JOptionPane;
        
        
        public class essai1 {
         public static void main(String[] args){
        	 try {
        		System.setProperty("java.security.policy", "D:/Socket/security.policy");
        		ServerSocket ss = new ServerSocket(45600, 10, InetAddress.getLocalHost());
        		System.out.println("en attente de connexion ...");
        		ss.accept();
        		System.out.println("connexion entrente ! ");
        		JOptionPane.showMessageDialog(null, "Un client s'est connecté ave succès !!");
        		ss.close();
        	} catch (IOException e) {
        		// TODO Auto-generated catch block
        		e.printStackTrace();
        		JOptionPane.showMessageDialog(null, "une erreur est survenue lors de l'ouverture du port 45200");
        	}
        	
        
        
         }
        }
        


        client :

        import java.io.IOException;
        import java.net.InetAddress;
        import java.net.Socket;
        import java.net.UnknownHostException;
        
        import javax.swing.JOptionPane;
        
        
        public class client1 {
        
        	/**
        	 * @param args
        	 */
        	public static void main(String[] args) {
        
        		try {
        		
        			System.setProperty("java.security.policy", "D:/Socket/security.policy");
        			Socket s = new Socket("90.12.237.161", 45600, InetAddress.getLocalHost(), 45500);
        
        			JOptionPane.showMessageDialog(null, "La connexion s'est déroulée avec succès au serveur !!");
        			s.close();
        		} catch (UnknownHostException e) {
        			// TODO Auto-generated catch block
        			e.printStackTrace();
        		} catch (IOException e) {
        			// TODO Auto-generated catch block
        			e.printStackTrace();
        			JOptionPane.showMessageDialog(null, "une erreur est survenue lors de la connexion au serveur.");
        			
        		}
        	}
        
        }
        


        et l'exception côté client :

        java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at client1.main(client1.java:19)


        ça fait longtemps que je cherche à faire communiquer deux PC distants, mais je n'y ai jamais réussi ... si quelqu'un pouvais m'aider ...
        en fait, c'est toujours ce problème de "connection refused" qui me bloque ...
        merci d'avance.

        EDIT

        j'ai tout essayé, pas moyen, si quelqu'un sait ... je lui serait vraiment reconnaissant :)

        j'ai par exemple essayé avec ceci :

        System.setProperty("java.security.policy", "D:/Socket/security.policy");
        			Socket s = new Socket(InetAddress.getByName("90.12.237.161"), 45600, InetAddress.getByName("192.168.1.14"), 45500);
        


        même résultats ... même en désactivant les pare-feu.

        EDIT EDIT

        j'ai trouvé !!!
        je cherchais depuis des mois ... j'ai enfin trouve !
        simplement, les ports que j’essayai d'utiliser était bloqué par ma livebox ... en utilisant les ports classique 80 et 21, ça marche, seulement, ils sont souvent utilisés par d'autre rpg, comme Skype, Wamp, filezilla, voir thunderbird ou Firefox ... Bref, es-ce facile de libérer un port pour un utilisateurs lambda ? (mon logiciel est destiné aux utilisateurs lambda alors ...)

        merci beaucoup.
        • Partager sur Facebook
        • Partager sur Twitter

        constructeur Socket(String, int, String, int) introuvable

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown