This gist is deprecated and will not be edited in the future. Consider visit ninedraft/python-udp repo. It will not be deleted, however.
Works for python 3.7 and 2.7 for Mac OS and Linux(kernel>=3.9) hosts. If you'ra using linux(kernel<3.9), then use socket.O_REUSEADDR
instead of socket.SO_REUSEPORT
to share (host, port)
between multiple clients and servers.
Tricks and traps:
- Socket portability issues: How do SO_REUSEADDR and SO_REUSEPORT differ?;
- Awesome "Socket Programming HOWTO";
But your solution actually works on linux and mac os both. I forgot to mark client socket as UDP, and if you don't to listen incoming messages on server, than you can omit port binding. I've checked it for Mac OS and linux. So I've applied your fix 👌
I'm thinking about a separate repo with this example since related thread and code keep growing.