Bonjour,
en faite je voulais envoyer un fichier d'un client a un serveur en utilisant socket java j'ai réussi a faire un transfert direct entre:
client----------->serveur(entre 2 machine en local)
je cherche a le faire en passant par plusieurs serveur intermédiaire(en local ):exemple client--->serveur1----->serveur2---->serveur final
le client envoi le fichier a serveur1 qui le relaye jusqu'à a l'arrivé au serveur final.
voici mon code pour l'envoi directe (sachant que j ai prevoyé l'envoi dune liste pour le chemin mais ca c'est la 2 étape..)
classe 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package chat_compris;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;

/**
 *
 * @author othmane
 */
public class client1
{
	public static void main(String[] args) throws IOException
	{
		// En-tête Ã* envoyer
		String[] tab = {"Serveur1", "Serveur2","Serveur3", "Client"};

		// Ouverture de la communication

                Socket sock = new Socket(InetAddress.getLocalHost(),9001);
		ObjectOutputStream out = new ObjectOutputStream(sock.getOutputStream());

		// Envoi de l'en-tête
		out.writeInt(tab.length);
		for (int i=0; i<tab.length; i++)
			out.writeUTF(tab[i]);

		// Envoi du fichier
		commun.transfert(
				new FileInputStream(new File("C:\\M1\\oth.png")),
				out,
				true);

		// Fermeture de la communication
		sock.close();
	}
}
classe serveur
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package chat_compris;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *
 * @author othmane
 */
public class serveur1
{

	public static void main(String[] args) throws IOException
	{
		// Ouverture d'une communication
		Socket sock = new ServerSocket(9001).accept();
		ObjectInputStream in = new ObjectInputStream(sock.getInputStream());

		// Réception de l'en-tête
		int n = in.readInt();

		String[] tab = new String[n];

		for (int i=0; i<n; i++)
			tab[i]=in.readUTF();

		// Réception du fichier
		commun.transfert(
				in,
				new FileOutputStream(new File("C:\\M2\\f2.png")),
				true);

		// Fermeture de la communication
		sock.close();

		// Affichage de l'en-tête
		for (String s : tab)
			System.out.println(s);



    }
}
classe comun
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package chat_compris;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 *
 * @author othmane
 */
public class commun
{

    public static void transfert(InputStream in, OutputStream out, boolean closeOnExit) throws IOException
    {
        byte buf[] = new byte[1024];

        int n;
        while((n=in.read(buf))!=-1)
            out.write(buf,0,n);

        if (closeOnExit)
        {
            in.close();
            out.close();
        }
    }
  }
avez vous une idée sur le code pour réussir ca
merci de votre compréhension
merci de votre aide d'avance