Untitled

 avatar
unknown
python
5 months ago
1.0 kB
3
Indexable
import socket
import time


def udp_forwarder(listen_address: tuple, forward_addresses: list[tuple]):
    try:
        server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        server_socket.bind(listen_address)
        print(f"Listening for UDP packets on {listen_address}...")
        print(f"Forwarded to")
        for addr in forward_addresses:
            print(addr)

        while True:
            data, addr = server_socket.recvfrom(1024)  # addr not used
            print(f"({time.time():<20}) {addr}: {len(data):<4} bytes [0x{data[0]:02X} 0x{data[1]:02X} 0x{data[2]:02X} ...]")
            for ip, port in forward_addresses:
                server_socket.sendto(data, (ip, port))

    except KeyboardInterrupt:
        print("UDP forwarder stopped")
    finally:
        server_socket.close()
        
if __name__ == "__main__":
    listen_address = ("0.0.0.0", 27801)
    forward_addresses = (
        ("localhost", 27802),
        ("192.168.5.101", 27801),
    )
    udp_forwarder(listen_address, forward_addresses)

Editor is loading...
Leave a Comment