Я пытаюсь сделать вещательный сервис в MacOS, используя python.
Для получателей я использовал этот код:
port = 8881
my_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
my_socket.bind(('', port))
Во второй строке я установил опцию сокета, чтобы можно было повторно использовать адрес, даже если другие получатели будут прослушивать через тот же порт.
Однако при запуске приемников только первый делает это правильно, а все остальные выдают исключения:
Traceback (most recent call last):
File "broadcast/broadcast_listener.py", line 31, in <module>
main()
File "broadcast/broadcast_listener.py", line 20, in main
my_socket.bind(('', port))
OSError: [Errno 48] Address already in use
Мне не удалось воспроизвести эту ошибку в Ubuntu, поэтому я думаю, что это связано с MacOS.
Есть ли способ повторно использовать сокеты (даже мысль крайне не рекомендуется)?
Заранее спасибо.