From f3e09104ab36865bcb98d801e5bf32cff35ec53b Mon Sep 17 00:00:00 2001 From: tuvu Date: Tue, 25 Feb 2025 11:57:40 +0100 Subject: [PATCH] fini exo3 --- .../java/pr/tp2/udp/chat/ChatMulticast.java | 24 +++++- .../java/pr/tp2/udp/tftp/TftpPutServeur.java | 78 ++++++++----------- 2 files changed, 57 insertions(+), 45 deletions(-) diff --git a/src/main/java/pr/tp2/udp/chat/ChatMulticast.java b/src/main/java/pr/tp2/udp/chat/ChatMulticast.java index aa303f4..148484c 100644 --- a/src/main/java/pr/tp2/udp/chat/ChatMulticast.java +++ b/src/main/java/pr/tp2/udp/chat/ChatMulticast.java @@ -1,16 +1,38 @@ package pr.tp2.udp.chat; +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.InetAddress; +import java.net.MulticastSocket; +import java.net.UnknownHostException; +import java.util.Scanner; + public class ChatMulticast { private static class Receiver implements Runnable { @Override public void run() { + int port = 6969; // Code de reception et affichage + try { + InetAddress groupIP = InetAddress.getByName("225.0.4.1"); + MulticastSocket socket = new MulticastSocket(port); + } catch (Exception e) { + e.printStackTrace(); + } } } - public static void main(String[] args) { + public static void main(String[] args) throws IOException { + // Lecture au clavier et envoie du message // Vous pouvez utiliser Scanner : https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html + while (true) { + byte[] buffer = new byte[1024]; + DatagramPacket packet = new DatagramPacket(buffer, buffer.length); + Scanner sc = new Scanner(System.in); + + + } } } diff --git a/src/main/java/pr/tp2/udp/tftp/TftpPutServeur.java b/src/main/java/pr/tp2/udp/tftp/TftpPutServeur.java index 07748cb..8226df4 100644 --- a/src/main/java/pr/tp2/udp/tftp/TftpPutServeur.java +++ b/src/main/java/pr/tp2/udp/tftp/TftpPutServeur.java @@ -3,63 +3,53 @@ package pr.tp2.udp.tftp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; -import java.net.InetSocketAddress; import java.net.SocketAddress; +import java.nio.ByteBuffer; //ncat -u -l -p 69 //tftp -i localhost PUT fichier.txt public class TftpPutServeur { public static void main(String[] args) { - try { - // Attends sur le port 6969 - DatagramSocket socket = new DatagramSocket(69); - - // Boucle - while(true){ - byte buffer[] = new byte[100]; - - // Reception du packet - DatagramPacket p = new DatagramPacket(buffer, buffer.length); - socket.receive(p); - - String requete = new String(buffer); - - System.out.println("\nPacket"); - // Affichage du packet - affiche(buffer); - System.out.println("\n"); - - - // Attention à ne pas afficher plus d'informations que nécessaire. - //System.out.println("plus d'informations que nécessaire"); - - // Décodage du packet - decodeRequest(p); - short numId = (short)requete.charAt(0); - // Envoyer acquittement - sendAck(socket,numId,p.getSocketAddress()); - } - } - catch (Exception e) { - - } - } + DatagramSocket socket = null; + try { + // Attends sur le port 6969 + socket = new DatagramSocket(6969); + short seqNumber = 0; + // Boucle + while (true) { + byte buffer[] = new byte[23]; + // Reception du packet + DatagramPacket p = new DatagramPacket(buffer, buffer.length); + socket.receive(p); + // Affichage du packet + affiche(buffer); + // Attention à ne pas afficher plus d'informations que nécessaire. + // Décodage du packet + decodeRequest(p); + // Envoyer acquittement + sendAck(socket, seqNumber, p.getSocketAddress()); + seqNumber++; + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (socket != null) socket.close(); + } + } public static void sendAck(DatagramSocket server, short seqNumber, SocketAddress dstAddr) throws IOException { System.out.println("Send " + seqNumber + " to " + dstAddr); - // Construire le paquet avec les bonnes informations - byte[] ackBytes = ((seqNumber)+"ack").getBytes(); - DatagramPacket p = new DatagramPacket(ackBytes,ackBytes.length,dstAddr); - - System.out.println("Ack"); + ByteBuffer byteBuffer = ByteBuffer.allocate(4); + byteBuffer.putShort((short) 4); + byteBuffer.putShort(seqNumber); + byte[] buffer = byteBuffer.array(); + DatagramPacket p = new DatagramPacket(buffer,buffer.length,dstAddr); // afficher le tableau de bytes envoyé - affiche(ackBytes); - + affiche(buffer); // Envoyer le paquet à la bonnes addresses server.send(p); - } public static void affiche(byte[] bytes) { @@ -72,6 +62,6 @@ public class TftpPutServeur { } public static void decodeRequest(DatagramPacket p) { - System.out.printf("Type : %s, fichier : %s, mode %s", "RRQ", "test.txt", "ascii"); + System.out.printf("Type : %s, fichier : %s, mode %s", "RRQ", "test.txt", "ascii \n"); } }