[JAVA]transfert fichier vers un pc distant

Résolu/Fermé
calaglin2 Messages postés 44 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 21 septembre 2009 - 19 févr. 2007 à 21:59
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 - 26 janv. 2010 à 22:26
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
A voir également:

4 réponses

calaglin2 Messages postés 44 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 21 septembre 2009 13
20 févr. 2007 à 16:15
ç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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
20 févr. 2007 à 17:12
salut.
Pourquoi ouvrir et fermer le socket à chaque foi dans la boucle for ?
Moi, je mettrai l'initialisation et la fermeture en dehors.
0
miras1 Messages postés 7 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 31 décembre 2008
24 août 2008 à 17:19
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
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
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
26 janv. 2010 à 22:26
bonsoir
est ce que vous pouvez m'expliquer comment econnecter entre 2 pC didtant avec internet et merci d'avance
0