Files
dscp-toy/server.py
2025-01-29 12:13:15 +01:00

37 lines
1.2 KiB
Python

import socket
import argparse
import time
import sys
def main():
# Parse command-line arguments
parser = argparse.ArgumentParser(description="UDP Packet Receiver with Timeout")
parser.add_argument('--port', type=int, required=True, help="Port to listen for UDP packets.")
parser.add_argument('--timeout', type=int, required=True, help="Timeout in seconds to shut down if no packets are received.")
args = parser.parse_args()
# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("", args.port))
print(f"Listening for UDP packets on port {args.port}...")
# Set the timeout for the socket
sock.settimeout(args.timeout)
try:
while True:
try:
# Wait for a UDP packet
data, addr = sock.recvfrom(1024) # Buffer size is 1024 bytes
except socket.timeout:
print(f"No packets received for {args.timeout} seconds. Shutting down.")
break
except KeyboardInterrupt:
print("\nShutting down due to user interrupt.")
finally:
sock.close()
print("Socket closed.")
if __name__ == "__main__":
main()