classification
Title: multiple socket bind failure on Mac OS X with SO_REUSEADDR
Type: behavior Stage:
Components: Library (Lib), macOS Versions: Python 3.8
process
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 

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