Skip to content

asyncio.DatagramProtocol, local testing

Python asyncio UDP receiver for Solana shred testing

Download a Python asyncio datagram probe for verification challenges, source filtering, local packet injection, and live shred arrival checks.

Download the source

What this implementation does

The script creates a nonblocking IPv4 UDP socket, requests an 8 MiB receive buffer, and hands it to asyncio.create_datagram_endpoint. DatagramProtocol receives one bytes object per datagram. The callback filters source IP 203.23.178.228, rejects payloads over 1,228 bytes, prints the verification challenge, and counts stream traffic. A one-second timer reports counters even when no packets arrive.

Check a live destination

bash

python3 receiver.py --port 9000

Keep the script running while requesting a dashboard challenge. The firewall must allow UDP from 203.23.178.228 to the registered port. Use tcpdump to separate network delivery from application receipt if the script stays silent.

Inject a local datagram

For a laptop or staging check, run the receiver with --source 127.0.0.1, then send a synthetic challenge from another terminal. This verifies the asyncio callback and local port; it does not verify the provider path or a real token.

bash

python3 receiver.py --port 9000 --source 127.0.0.1python3 -c 'import socket; socket.socket(socket.AF_INET, socket.SOCK_DGRAM).sendto(b"SHREDCAST-VERIFY synthetic", ("127.0.0.1", 9000))'

Production boundary

asyncio hands the callback a new bytes object, so this example does not provide zero-copy receive or Linux SO_RXQ_OVFL reporting. Python is useful for activation and regression probes; a sustained production receiver needs measured packet-rate headroom, socket-drop telemetry, bounded downstream work, and release-matched shred validation. See drop detection.

Upstream APIs and source