From cde5278ac29f3d8cb778dd52307f63f6b3052dcd Mon Sep 17 00:00:00 2001 From: Ynn Date: Sun, 23 Feb 2025 18:50:21 +0100 Subject: [PATCH 1/2] update part 2 --- .gitignore | 90 ++++++++++++++++++- .../java/pr/tp2/udp/chat/ChatMulticast.java | 16 ++++ .../java/pr/tp2/udp/discovery/Discovery.java | 55 ------------ .../pr/tp2/udp/discovery/TestDiscovery.java | 17 ---- 4 files changed, 105 insertions(+), 73 deletions(-) create mode 100644 src/main/java/pr/tp2/udp/chat/ChatMulticast.java delete mode 100644 src/main/java/pr/tp2/udp/discovery/Discovery.java delete mode 100644 src/main/java/pr/tp2/udp/discovery/TestDiscovery.java diff --git a/.gitignore b/.gitignore index a181cc2..daaf70a 100644 --- a/.gitignore +++ b/.gitignore @@ -231,4 +231,92 @@ Network Trash Folder Temporary Items .apdisk -# End of https://www.gitignore.io/api/osx,java,linux,maven,eclipse,intellij +### Intellij+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij+all Patch ### +# Ignore everything but code style settings and run configurations +# that are supposed to be shared within teams. + +.idea/* + +!.idea/codeStyles +!.idea/runConfigurations + +# End of https://www.toptal.com/developers/gitignore/api/intellij+all \ No newline at end of file diff --git a/src/main/java/pr/tp2/udp/chat/ChatMulticast.java b/src/main/java/pr/tp2/udp/chat/ChatMulticast.java new file mode 100644 index 0000000..aa303f4 --- /dev/null +++ b/src/main/java/pr/tp2/udp/chat/ChatMulticast.java @@ -0,0 +1,16 @@ +package pr.tp2.udp.chat; + +public class ChatMulticast { + + private static class Receiver implements Runnable { + @Override + public void run() { + // Code de reception et affichage + } + } + + public static void main(String[] args) { + // 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 + } +} diff --git a/src/main/java/pr/tp2/udp/discovery/Discovery.java b/src/main/java/pr/tp2/udp/discovery/Discovery.java deleted file mode 100644 index ba94fe5..0000000 --- a/src/main/java/pr/tp2/udp/discovery/Discovery.java +++ /dev/null @@ -1,55 +0,0 @@ -package pr.tp2.udp.discovery; - -public class Discovery { - - public static void sendWhois(String id) { - // Envoie un message Whois - } - - public static void sendLeaving(String id) { - // Envoie un message Leaving - } - - public static void sendIAM(String id, String url) { - // Envoie un message IAM - } - - public static void listenAndReply() { - // Ecoute et affiche les évennements IAM,LEAVING - - // Réponds aux WHOIS si ID = ID - // URL du service : - String ID = "051005022"; - String URL = "https://istic.univ-rennes1.fr/"; - - } - - public static void main(String[] args) { - String cmd = args[0], url = null, id = null; - if (args.length > 1) { - id = args[1]; - } - if (args.length == 3) { - url = args[2]; - } - - switch (cmd) { - case "listen": - listenAndReply(); - break; - case "iam": - sendIAM(id, url); - break; - case "leaving": - sendLeaving(id); - break; - case "whois": - sendWhois(id); - break; - default: - System.out.println("Erreur de commande"); - break; - - } - } -} diff --git a/src/main/java/pr/tp2/udp/discovery/TestDiscovery.java b/src/main/java/pr/tp2/udp/discovery/TestDiscovery.java deleted file mode 100644 index ed173df..0000000 --- a/src/main/java/pr/tp2/udp/discovery/TestDiscovery.java +++ /dev/null @@ -1,17 +0,0 @@ -package pr.tp2.udp.discovery; - -public class TestDiscovery { - - public static void main(String[] args) throws InterruptedException { - Runnable listener = () -> { - Discovery.listenAndReply(); - }; - new Thread(listener).start(); - - Discovery.sendWhois("051005022"); - Discovery.sendIAM("tftp", "127.0.0.1:6969"); - - Thread.sleep(10000); - - } -} From e704a6d370c5c46affe5665e272914ad92b4ceef Mon Sep 17 00:00:00 2001 From: tuvu Date: Tue, 25 Feb 2025 10:08:26 +0100 Subject: [PATCH 2/2] ok --- src/main/java/pr/tp2/udp/tftp/TftpDecode.java | 50 +++++++++---------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/src/main/java/pr/tp2/udp/tftp/TftpDecode.java b/src/main/java/pr/tp2/udp/tftp/TftpDecode.java index 122efbd..fc1ba11 100644 --- a/src/main/java/pr/tp2/udp/tftp/TftpDecode.java +++ b/src/main/java/pr/tp2/udp/tftp/TftpDecode.java @@ -3,37 +3,33 @@ package pr.tp2.udp.tftp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; -import java.net.InetAddress; -import java.net.ServerSocket; public class TftpDecode { public static void main(String[] args) throws IOException { - int portTFTP = 7777; - int portServeur= 6969; - InetAddress ipServeur = InetAddress.getByName("localhost"); - try{ - // Attends sur le port 6969 - DatagramSocket dSocket = new DatagramSocket(portTFTP); + int portServeur = 6969; + DatagramSocket dSocket = null; + try { + // Attends sur le port 6969 + dSocket = new DatagramSocket(portServeur); + // Boucle + while (true) { + byte[] buffer = new byte[21]; + // Reception du packet + DatagramPacket reception = new DatagramPacket(buffer, buffer.length); + dSocket.receive(reception); + // Affichage du packet + affiche(buffer); + // Attention à ne pas afficher plus d'informations que nécessaire. - // Boucle - while (true) { - byte[] buffer = new byte[512]; - // Reception du packet - DatagramPacket reception =new DatagramPacket(buffer, buffer.length); - dSocket.receive(reception); - - // Affichage du packet - System.out.println(new String(buffer)); - - // Attention à ne pas afficher plus d'informations que nécessaire. - - // Décodage du packet - decodeRequest(reception); - } - } catch (IOException e) { - e.printStackTrace(); - } - } + // Décodage du packet + decodeRequest(reception); + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + dSocket.close(); + } + } public static void affiche(byte[] bytes) { for (int i = 0; i < bytes.length; i++) {