I have a Python application which wants to receive UDP packets like this: with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s: s.bind((ip, port)) s.settimeout(0.1) while self.shall_run: try: data, addr = s.recvfrom(1024) self.packets.append(data) except socket.timeout: continue With Wireshark I can observe the packets coming in from an external device, but somehow they never reach this Python code. It seems like Windows is dropping the packet for some reason, but I'm out of ideas why: Firewall settings are fine. The packets are smaller than MTU, just 200 bytes for example. IP and port are correct. I tried with IP "0.0.0.0". The packets are not multicast. IP and UDP checksums are correct or disabled (zero). Adding some logging, I can see the timeout-continue loop works correctly. No exceptions are raised in the code, it terminates by shall_run getting set to False. Using scapy AsyncSniffer, I can receive the packets, but I don't want to rely on tcpdump. Continue reading...