Téléchargement
illégal
Posez votre question Signaler

[JAVA]transfert fichier vers un pc distant [Résolu]

calaglin2 44Messages postés 19 février 2007Date d'inscription - Dernière réponse le 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
Lire la suite 

[JAVA]transfert fichier vers un pc distant »

5 réponses
Réponse
+0
moins plus
ç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
Ajouter un commentaire
Réponse
+0
moins plus
salut.
Pourquoi ouvrir et fermer le socket à chaque foi dans la boucle for ?
Moi, je mettrai l'initialisation et la fermeture en dehors.
Ajouter un commentaire
Réponse
+0
moins plus
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.
sansoona - 20 avril 2009 à 17:45
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();
}
}
Ajouter un commentaire
Réponse
+0
moins plus
bonsoir
est ce que vous pouvez m'expliquer comment econnecter entre 2 pC didtant avec internet et merci d'avance
Ajouter un commentaire
Ce document intitulé « [JAVA]transfert fichier vers un pc distant » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?