Le programme ne transmet pas les messages
De la destination vers la source ou bien de la source vers la destination, le programme reçoit bien les messages comme il faut après vérification en mode verbeux, mais il ne les transmet jamais vers l'autre bout de la liaison. (pourtant la source et la destination fonctionnent bien entre elles-même sans le medium, après vérification)
En lisant le code, je me dis qu'il y a peut-être une erreur au niveau de la socket utilisée ? (recv au lieu de source et source au lieu de recv, ce qui mélange les ports)
C'est-à-dire qu'en utilisant la sock_source pour envoyer vers la destination, c'est du port 4444 au port 6666 directement, alors que la destination écoute sur le port 5555 correspondant à la sock_recv du programme perturbateur conformément au sujet.
J'ai aussi remarqué qu'une taille de 64 octets est précisée en argument, mais les messages sont de taille 52 octets d'après le sujet, est-ce normal ?
Extrait du code, en exemple :
data, addr = sock_recv.recvfrom(64)
sock_recv.sendto(data, (dest_sender, port_sender))
EDIT : Concernant le bout de code suivant, soit la condition est incorrecte soit l'indentation, le médium ne transmettra aucun message avant d'avoir atteint le maximum.. Est-ce normal ? J'ai peut-être mal compris l'utilisation du programme, je note bien qu'il est sensé générer une perte à partir d'un certain nombre de paquets par seconde, mais c'est le seul endroit dans le code où une transmission à la destination est faite, il faut que le médium transmette tous les paquets en temps normal, non ?
if nb_packets > MAX_PACKETS:
if ecn :
if not tagged:
data_tmp = bytearray(data)
data_tmp[5] = ECN_ACTIVE
data = bytes(data_tmp)
tagged = True
sock_recv.sendto(data, (dest_recv, port_recv))
else:
if random.random() <= 0.7:
sock_recv.sendto(data, (dest_recv, port_recv))