Envoi et réception dun fichier.txt en java

Fermé
islem gnichi - 15 janv. 2016 à 14:52
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 16 janv. 2016 à 14:55
Bonsoir,tous le monde;Le but de mon question est comment réaliser deux programmes (Client et Server) permettant le transfert d’un fichier. Le client devra lire un fichier.txt depuis le disque dur et l’envoyer en utilisant le protocole UDP(en mode multicast). Le serveur(s) devra recevoir le fichier par le réseau et l’enregistrer sur le disque dur.
le client et le serveur sont deux PCs distincts.
merci.
A voir également:

1 réponse

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
16 janv. 2016 à 00:03
Bonjour,

Vous pouvez faire appel aux "Socket"
Plein d'exemples sont disponibles, faites une tentative et on verra après si vous aurez des problèmes.

https://docs.oracle.com/javase/tutorial/networking/sockets/

Bon Courage.
0
islem gnichi
16 janv. 2016 à 09:25
merci tarek,
Voici le code d'envoi:
FileInputStream fis = new FileInputStream(file1);
byte[] clientBuffer = new byte[1024];
System.out.println("Sending PL to Listener..");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
fis.read(clientBuffer);
baos.write(clientBuffer);
MulticastSocket ds = new MulticastSocket();
InetAddress adrss = InetAddress.getByName(MULTI_ADDR1);
DatagramPacket packet = new DatagramPacket(clientBuffer, clientBuffer.length, adrss, port3);
fis.close();
ds.send(packet);
ds.close();
System.out.println("PL file has been sent");

et ici le code de réception:
InetAddress inetAddress = InetAddress.getByName(MULTI_ADDR1);
MulticastSocket ds = new MulticastSocket(port3);
ds.joinGroup(inetAddress);
byte[] receivedPacket = new byte[1024];
DatagramPacket packet = new DatagramPacket( receivedPacket, receivedPacket.length ) ;
ds.receive( packet );
System.out.println("received the PL file..");
FileOutputStream fos = new FileOutputStream(file3);
byte[] data = packet.getData();
fos.write(data);
fos.flush();
fos.close();
ds.leaveGroup(inetAddress);
ds.close();
l'envoi est fait parfaitement et affiche tous les messages,mais le serveur reste en écoute et ne recu aucun fichier!
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
16 janv. 2016 à 14:55
Je n'aurai pas fait la même chose,
Je ne vois pas l'ouverture de la Socket du côté client ni l'acceptance de la connexion de côté serveur alors je suppose que vous les avez fait ailleur.
Il faut récupérer le OutputStream de la socket côté client et le InputStream de la socket côté serveur. Ensuite, l'utiliusation d'un BufferedReader et d'un BufferedWriter vous permettra de faire des "println" côté client et des "readLine" côté serveur. Ainsi, vous exploitez le fait d'avoir un fichier texte (très compatible avec la nature des Socket) et non pas des données binaires.

Un exemple dans ce sense :
https://cs.lmu.edu/~ray/notes/javanetexamples/
0