Вещательный сервис с использованием Python в MacOS - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь сделать вещательный сервис в 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. Есть ли способ повторно использовать сокеты (даже мысль крайне не рекомендуется)? Заранее спасибо.

...