I am connecting to a server using a multicast UDP socket.
Running two instances of the code below, in two shell windows on the same computer, it works on both Windows 10 and Ubuntu 18.04, but it fails on Mac OS 10.15.7, reporting:
>>> sock.bind(('', MCAST_PORT))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 48] Address already in use
~~
import socket
CLIENT_IP = '192.168.1.53'
MCAST_ADDR = '239.0.1.1'
MCAST_PORT = 10000
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket.inet_aton(CLIENT_IP))
sock.setsockopt(socket.SOL_IP, socket.IP_ADD_MEMBERSHIP, socket.inet_aton(MCAST_ADDR) + socket.inet_aton(CLIENT_IP))
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, socket.inet_aton(CLIENT_IP))
sock.bind(('', MCAST_PORT))
|