Title: multiple socket bind failure on Mac OS X with SO_REUSEADDR
Type: behavior Stage:
Components: Library (Lib), macOS Versions: Python 3.8
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: giangipy, ned.deily, ronaldoussoren
Priority: normal Keywords:

Created on 2021-05-01 21:16 by giangipy, last changed 2021-05-01 21:16 by giangipy.

Messages (1)
msg392641 - (view) Author: gs (giangipy) Date: 2021-05-01 21:16
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 


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))
Date User Action Args
2021-05-01 21:16:26giangipycreate