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