Initial commit

This commit is contained in:
ynn
2019-01-28 11:44:23 +01:00
commit be2e3f3350
7 changed files with 487 additions and 0 deletions

234
.gitignore vendored Normal file
View File

@@ -0,0 +1,234 @@
# Created by https://www.gitignore.io/api/osx,java,linux,maven,eclipse,intellij
# Edit at https://www.gitignore.io/?templates=osx,java,linux,maven,eclipse,intellij
### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
### Eclipse Patch ###
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Annotation Processing
.apt_generated
.sts4-cache/
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# 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
# 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/modules.xml
# .idea/*.iml
# .idea/modules
# 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
# 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 Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/sonarlint
### Java ###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### Maven ###
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
### OSX ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# End of https://www.gitignore.io/api/osx,java,linux,maven,eclipse,intellij

74
README.md Normal file
View File

@@ -0,0 +1,74 @@
# Squelette du TP
## Utilisation
Pour utiliser ce tp vous devez :
1. le forker via le lien fork ci-dessus.
2. Votre repository doit être **privé**. Vous devez le partager avec votre encadrant de TP.
3. vous obtiendrez un nouveau lien : par exemple git@gitlab.istic.univ-rennes1.fr:monpseudo/....
4. Dans le **workspace d'eclipse** faites `git clone git@gitlab.istic.univ-rennes1.fr:monpseudo/...` avec l'url précédente.
5. Ouvrez le workspace dans eclipse.
6. Utilisez Import> "Existing Maven Projects".
7. Selectionnez le projet et validez.
Vous devriez avoir une version du projet dans votre propre compte gitlab.
Vous pouvez le partager avec votre binome et l'encadrant de TP.
## Rapport
Votre rapport doit être écrit ici en markdown.
Vous trouverez la syntaxe de markdown ici : https://docs.gitlab.com/ee/user/markdown.html
Placez vos images dans le répertoire images si nécessaire.
## Faire des diagrammes
En particulier vous pouvez utiliser [mermaid](https://mermaidjs.github.io/) :
```mermaid
sequenceDiagram
participant Alice
participant Bob
Alice->John: Hello John, how are you?
loop Healthcheck
John->John: Fight against hypochondria
end
Note right of John: Rational thoughts <br/>prevail...
John-->Alice: Great!
John->Bob: How about you?
Bob-->John: Jolly good!
```
## Insérer du code
Insérer du `code` :
```java
public interface ClientHandler {
public void handle();
}
```
et des résultats :
```bash
[yo@capybara dkgr]$ nc google.fr 80
PWET /
HTTP/1.0 400 Bad Request
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Content-Length: 1555
Date: Mon, 21 Jan 2019 12:18:02 GMT
<!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
```

21
pom.xml Normal file
View File

@@ -0,0 +1,21 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.istic.pr</groupId>
<artifactId>pr.tp2.udp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,55 @@
package pr.tp2.udp.discovery;
public class Discovery {
public static void handleWhois(String id) {
// Envoie un message Whois
}
public static void handleLeaving(String id) {
// Envoie un message Leaving
}
public static void handleIAM(String id, String url) {
// Envoie un message IAM
}
public static void handleListen() {
// 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":
handleListen();
break;
case "iam":
handleIAM(id, url);
break;
case "leaving":
handleLeaving(id);
break;
case "whois":
handleWhois(id);
break;
default:
System.out.println("Erreur de commande");
break;
}
}
}

View File

@@ -0,0 +1,17 @@
package pr.tp2.udp.discovery;
public class TestDiscovery {
public static void main(String[] args) throws InterruptedException {
Runnable listener = () -> {
Discovery.handleListen();
};
new Thread(listener).start();
Discovery.handleWhois("051005022");
Discovery.handleIAM("tftp", "127.0.0.1:6969");
Thread.sleep(10000);
}
}

View File

@@ -0,0 +1,35 @@
package pr.tp2.udp.tftp;
import java.net.DatagramPacket;
public class TftpDecode {
public static void main(String[] args) {
// Attends sur le port 6969
// Boucle
// Reception du packet
DatagramPacket p = null;
// Affichage du packet
// Attention à ne pas afficher plus d'informations que nécessaire.
// Décodage du packet
decodeRequest(p);
}
public static void affiche(byte[] bytes) {
for (int i = 0; i < bytes.length; i++) {
if (i % 16 == 0) {
System.out.println("\n");
}
System.out.printf("%02x ", bytes[i]);
}
}
public static void decodeRequest(DatagramPacket p) {
System.out.printf("Type : %s, fichier : %s, mode %s", "RRQ", "test.txt", "ascii");
}
}

View File

@@ -0,0 +1,51 @@
package pr.tp2.udp.tftp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketAddress;
public class TftpPutServeur {
public static void main(String[] args) {
// Attends sur le port 6969
// Boucle
// Reception du packet
DatagramPacket p = null;
// Affichage du packet
// Attention à ne pas afficher plus d'informations que nécessaire.
// Décodage du packet
decodeRequest(p);
// Envoyer acquittement
// sendAck(server, /***/);
}
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
// afficher le tableau de bytes envoyé
// Envoyer le paquet à la bonnes addresses
}
public static void affiche(byte[] bytes) {
for (int i = 0; i < bytes.length; i++) {
if (i % 16 == 0) {
System.out.println("\n");
}
System.out.printf("%02x ", bytes[i]);
}
}
public static void decodeRequest(DatagramPacket p) {
System.out.printf("Type : %s, fichier : %s, mode %s", "RRQ", "test.txt", "ascii");
}
}