fini exo3
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user