fini exo3

This commit is contained in:
tuvu
2025-02-25 11:57:40 +01:00
parent f6bfdbc63a
commit f3e09104ab
2 changed files with 57 additions and 45 deletions

View File

@@ -1,16 +1,38 @@
package pr.tp2.udp.chat; 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 { public class ChatMulticast {
private static class Receiver implements Runnable { private static class Receiver implements Runnable {
@Override @Override
public void run() { public void run() {
int port = 6969;
// Code de reception et affichage // 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 // 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 // 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);
}
} }
} }

View File

@@ -3,63 +3,53 @@ package pr.tp2.udp.tftp;
import java.io.IOException; import java.io.IOException;
import java.net.DatagramPacket; import java.net.DatagramPacket;
import java.net.DatagramSocket; import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress; import java.net.SocketAddress;
import java.nio.ByteBuffer;
//ncat -u -l -p 69 //ncat -u -l -p 69
//tftp -i localhost PUT fichier.txt //tftp -i localhost PUT fichier.txt
public class TftpPutServeur { public class TftpPutServeur {
public static void main(String[] args) { public static void main(String[] args) {
try { DatagramSocket socket = null;
// Attends sur le port 6969 try {
DatagramSocket socket = new DatagramSocket(69); // Attends sur le port 6969
socket = new DatagramSocket(6969);
// Boucle short seqNumber = 0;
while(true){ // Boucle
byte buffer[] = new byte[100]; while (true) {
byte buffer[] = new byte[23];
// Reception du packet // Reception du packet
DatagramPacket p = new DatagramPacket(buffer, buffer.length); DatagramPacket p = new DatagramPacket(buffer, buffer.length);
socket.receive(p); socket.receive(p);
// Affichage du packet
String requete = new String(buffer); affiche(buffer);
// Attention à ne pas afficher plus d'informations que nécessaire.
System.out.println("\nPacket"); // Décodage du packet
// Affichage du packet decodeRequest(p);
affiche(buffer); // Envoyer acquittement
System.out.println("\n"); sendAck(socket, seqNumber, p.getSocketAddress());
seqNumber++;
}
// Attention à ne pas afficher plus d'informations que nécessaire. } catch (Exception e) {
//System.out.println("plus d'informations que nécessaire"); e.printStackTrace();
} finally {
// Décodage du packet if (socket != null) socket.close();
decodeRequest(p); }
short numId = (short)requete.charAt(0); }
// Envoyer acquittement
sendAck(socket,numId,p.getSocketAddress());
}
}
catch (Exception e) {
}
}
public static void sendAck(DatagramSocket server, short seqNumber, SocketAddress dstAddr) throws IOException { public static void sendAck(DatagramSocket server, short seqNumber, SocketAddress dstAddr) throws IOException {
System.out.println("Send " + seqNumber + " to " + dstAddr); System.out.println("Send " + seqNumber + " to " + dstAddr);
// Construire le paquet avec les bonnes informations // Construire le paquet avec les bonnes informations
byte[] ackBytes = ((seqNumber)+"ack").getBytes(); ByteBuffer byteBuffer = ByteBuffer.allocate(4);
DatagramPacket p = new DatagramPacket(ackBytes,ackBytes.length,dstAddr); byteBuffer.putShort((short) 4);
byteBuffer.putShort(seqNumber);
System.out.println("Ack"); byte[] buffer = byteBuffer.array();
DatagramPacket p = new DatagramPacket(buffer,buffer.length,dstAddr);
// afficher le tableau de bytes envoyé // afficher le tableau de bytes envoyé
affiche(ackBytes); affiche(buffer);
// Envoyer le paquet à la bonnes addresses // Envoyer le paquet à la bonnes addresses
server.send(p); server.send(p);
} }
public static void affiche(byte[] bytes) { public static void affiche(byte[] bytes) {
@@ -72,6 +62,6 @@ public class TftpPutServeur {
} }
public static void decodeRequest(DatagramPacket p) { 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");
} }
} }