[JAVA]transfert fichier vers un pc distant

Résolu
calaglin2 Messages postés 45 Statut Membre -  
yuri648 Messages postés 785 Statut Membre -
Je vous explique mon problème :

Je commence à développer actuellement un client bittorrent et je prend comme base un modèle client-serveur classique avec des socket etc ... seulement je n'arrive même pas à connecter le client au serveur sur un pc distant et encore moins à envoyer un fichiers de l'un à l'autre.

j'aimerai connecter le client au serveur à l'aide de l'ip et du numero de port que le client doit déjà connaitre

merci d'avance
Configuration: Windows XP
Firefox 2.0.0.1

4 réponses

  1. calaglin2 Messages postés 45 Statut Membre 13
     
    ça y est j'ai enfin réussi à me connecter sur mon reseau ( c'était juste un problème de config du routeur ) mais je n'arrive toujours pas à me connecter à un pc distant se trouvant derrière un routeur , la connection échoue systématiquement. Voici le code de mon client :

    import java.io.*;
    import java.util.*;
    import java.net.*;

    public class Client {

    static String serverName="localhost";
    static int port=12345;
    static InetAddress ipRoot;
    static InetAddress ip;

    public static void main(String[] a){
    try{
    iproot = InetAddress.getByName("82.67.139.165");
    ip = InetAddress.getByName("192.168.0.2");
    Random rand=new Random();
    for(int i=0;i<100;i++){
    Socket sock=new Socket(iproot, port, ip,port);
    PrintWriter os=new PrintWriter(sock.getOutputStream(), true);

    os.println(rand.nextInt(100));
    sock.close();}
    }
    catch (UnknownHostException ex) {
    System.err.println(ex);
    }
    catch(java.io.IOException e){
    System.out.println("Erreur de connexion");
    }
    }

    }

    le routeur redirige son port 12345 sur le 12345 du pc

    merci d'avance
    1
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    salut.
    Pourquoi ouvrir et fermer le socket à chaque foi dans la boucle for ?
    Moi, je mettrai l'initialisation et la fermeture en dehors.
    0
  3. miras1 Messages postés 7 Statut Membre
     
    Bonjour,
    Je vous explique mon problème :

    Moi aussi je commence à développer actuellement un client et un serveur communiquent avec des socket etc ... seulement je n'arrive même pas à connecter le client au serveur sur un seul pc et encore moins à envoyer un ''hello word '' ou bien un fichiers de l'un à l'autre.
    je voudrais connecter le client au serveur à l'aide de l'ip et du numero de port .
    si vous pouvais m'aider avec ton code source.

    Merci d'avance bien cordialement.
    0
    1. sansoona
       
      Bonjour,
      essayer avec ces codes
      //Client
      // Figure 21.4: Client.java
      // Définit un Client qui lira les informations envoyées
      // à partir d'un Serveur et affiche les informations.
      import java.io.*;
      import java.net.*;
      import java.awt.*;
      import java.awt.event.*;
      import javax.swing.*;

      public class Client extends JFrame {
      private JTextField texte;
      private JTextArea affichage;
      ObjectOutputStream sortie;
      ObjectInputStream entree;
      String message = "";

      public Client()
      {
      super( "Client" );

      Container c = getContentPane();

      texte = new JTextField();
      texte.setEnabled( false );
      texte.addActionListener(
      new ActionListener() {
      public void actionPerformed( ActionEvent e )
      {
      envoyerDonnees( e.getActionCommand() );
      }
      }
      );
      c.add( texte, BorderLayout.NORTH );

      affichage = new JTextArea();
      c.add( new JScrollPane( affichage ),
      BorderLayout.CENTER );

      setSize( 300, 150 );
      show();
      }

      public void lanceClient()
      {
      Socket client;

      try {
      // Etape 1: Créer un Socket pour assurer la connexion.
      affichage.setText( "Tentative de connexion\n" );
      client = new Socket(
      InetAddress.getByName( "127.0.0.1" ), 5000 );

      affichage.append( "Connecté à: " +
      client.getInetAddress().getHostName() );

      // Etape 2: Get des flux d'entrée et de sortie.
      sortie = new ObjectOutputStream(
      client.getOutputStream() );
      sortie.flush();
      entree = new ObjectInputStream(
      client.getInputStream() );
      affichage.append( "\nFlux d'E/S acquis\n" );

      // Etape 3: Procéder à la connexion.
      texte.setEnabled( true );

      do {
      try {
      message = (String) entree.readObject();
      affichage.append( "\n" + message );
      affichage.setCaretPosition(
      affichage.getText().length() );
      }
      catch ( ClassNotFoundException cnfex ) {
      affichage.append(
      "\nType d'objet reçu inconnu" );
      }
      } while ( !message.equals( "SERVEUR>>> TERMINER" ) );

      // Etape 4: Clore la connexion.
      affichage.append( "Clôture de la connexion.\n" );
      entree.close();
      sortie.close();
      client.close();
      }
      catch ( EOFException eof ) {
      System.out.println( "Serveur a clôturé la connexion" );
      }
      catch ( IOException e ) {
      e.printStackTrace();
      }
      }

      private void envoyerDonnees( String s )
      {
      try {
      message = s;
      sortie.writeObject( "CLIENT>>> " + s );
      sortie.flush();
      affichage.append( "\nCLIENT>>>" + s );
      }

      catch ( IOException cnfex ) {
      affichage.append(
      "\nErreur écriture de l'objet" );
      }
      }

      public static void main( String args[] )
      {
      Client app = new Client();

      app.addWindowListener(
      new WindowAdapter() {
      public void windowClosing( WindowEvent e )
      {
      System.exit( 0 );
      }
      }
      );

      app.lanceClient();
      }
      }
      //Serveur
      // Figure 21.3: Serveur.java
      // Mettre en place un serveur qui attend la connexion
      // d'un client, envoie une chaîne de caractères au client,
      // et ferme la connexion.
      import java.io.*;
      import java.net.*;
      import java.awt.*;
      import java.awt.event.*;
      import javax.swing.*;

      public class Serveur extends JFrame {
      private JTextField texte;
      private JTextArea affichage;
      ObjectOutputStream sortie;
      ObjectInputStream entree;

      public Serveur()
      {
      super( "Serveur" );

      Container c = getContentPane();

      texte = new JTextField();
      texte.setEnabled( false );
      texte.addActionListener(
      new ActionListener() {
      public void actionPerformed( ActionEvent e )
      {
      envoyerDonnees( e.getActionCommand() );
      }
      }
      );
      c.add( texte, BorderLayout.NORTH );

      affichage = new JTextArea();
      c.add( new JScrollPane( affichage ),
      BorderLayout.CENTER );

      setSize( 300, 150 );
      show();
      }

      public void lancerServeur()
      {
      ServerSocket serveur;
      Socket connexion;
      int compteur = 1;

      try {
      // Etape 1: Créer un ServerSocket.
      serveur = new ServerSocket( 5000, 100 );

      while ( true ) {
      // Etape 2: Attendre une connexion.
      affichage.setText( "Attente d'une connexion\n" );
      connexion = serveur.accept();

      affichage.append( "Connexion " + compteur +
      " reçue de: " +
      connexion.getInetAddress().getHostName() );

      // Etape 3: Get des flux d'entrée et de sortie.
      sortie = new ObjectOutputStream(
      connexion.getOutputStream() );
      sortie.flush();
      entree = new ObjectInputStream(
      connexion.getInputStream() );
      affichage.append( "\nFlux d'E/S acquis\n" );

      // Etape 4: Procéder à la connexion.
      String message =
      "SERVEUR>>> connexion réussie";
      sortie.writeObject( message );
      sortie.flush();
      texte.setEnabled( true );

      do {
      try {
      message = (String) entree.readObject();
      affichage.append( "\n" + message );
      affichage.setCaretPosition(
      affichage.getText().length() );
      }
      catch ( ClassNotFoundException cnfex ) {
      affichage.append(
      "\nType d'objet reçu inconnu" );
      }
      } while ( !message.equals( "CLIENT>>> TERMINER" ) );

      // Etape 5: Close connexion.
      affichage.append( "\nUtilisateur a clôturé connexion" );
      texte.setEnabled( false );
      sortie.close();
      entree.close();
      connexion.close();

      ++compteur;
      }
      }
      catch ( EOFException eof ) {
      System.out.println( "Client a clôturé connexion" );
      }
      catch ( IOException io ) {
      io.printStackTrace();
      }
      }

      private void envoyerDonnees( String s )
      {
      try {
      sortie.writeObject( "SERVEUR>>> " + s );
      sortie.flush();
      affichage.append( "\nSERVEUR>>>" + s );
      }
      catch ( IOException cnfex ) {
      affichage.append(
      "\nErreur écriture de l'objet" );
      }
      }

      public static void main( String args[] )
      {
      Serveur app = new Serveur();

      app.addWindowListener(
      new WindowAdapter() {
      public void windowClosing( WindowEvent e )
      {
      System.exit( 0 );
      }
      }
      );

      app.lancerServeur();
      }
      }
      0
  4. yuri648 Messages postés 785 Statut Membre 7
     
    bonsoir
    est ce que vous pouvez m'expliquer comment econnecter entre 2 pC didtant avec internet et merci d'avance
    0