diff --git a/sender.py b/sender.py index 4e2fbec..c302c20 100644 --- a/sender.py +++ b/sender.py @@ -35,7 +35,7 @@ def main(): parser.add_argument("--log-level", type=str, default="INFO") parser.add_argument("--bandwidth", type=str, default="1Mbps") parser.add_argument("--duration", type=int, default=10) - parser.add_argument("--dscp", type=str, default="") + parser.add_argument("--dscp", action='append', default=[]) args = parser.parse_args() logger.remove() logger.add(sys.stderr, level=args.log_level) @@ -44,16 +44,25 @@ def main(): time_between_packets = PACKET_SIZE / bandwidth packet_cnt = 0 logger.info(f"Connecting to {args.host}:{args.port}") - sock = socket(AF_INET, SOCK_DGRAM) - dscp = int(args.dscp) if args.dscp else 0 + + + sockets = [] + dscp = [int(x) for x in args.dscp] if dscp: - sock.setsockopt(IPPROTO_IP, IP_TOS, dscp << 2) + for value in dscp: + sock = socket(AF_INET, SOCK_DGRAM) + sock.setsockopt(IPPROTO_IP, IP_TOS, value << 2) + sockets.append(sock) + else: + sock = socket(AF_INET, SOCK_DGRAM) + sockets.append(sock) CODE_WORD = "CAFEABBA" payload = (CODE_WORD + "A" * (PACKET_SIZE - len(CODE_WORD))).encode() t0 = time.time() while True: logger.debug("Sending message:") - sock.sendto(payload, (args.host, args.port)) + for sock in sockets: + sock.sendto(payload, (args.host, args.port)) packet_cnt += 1 t1 = time.time() - t0 if t1 > args.duration: diff --git a/server.py b/server.py index a0105b9..c38345e 100644 --- a/server.py +++ b/server.py @@ -2,6 +2,7 @@ import socket import argparse import time import sys +from loguru import logger def main(): # Parse command-line arguments @@ -20,10 +21,13 @@ def main(): sock.settimeout(args.timeout) try: + count = 0 while True: try: # Wait for a UDP packet data, addr = sock.recvfrom(1024) # Buffer size is 1024 bytes + count += 1 + logger.debug(f"Received packet {count} from {addr}") except socket.timeout: print(f"No packets received for {args.timeout} seconds. Shutting down.") break