#python #sockets
#python #сокеты
Вопрос:
import socket
import json
from helper import sendDet
MCAST_GRP = '224.0.0.1'
MCAST_PORT = 5111
MULTICAST_TTL = 2
res = sendDet()
res = {'data': res}
res = json.dumps(res)
res = res.encode()
res = bytearray(res)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, MULTICAST_TTL)
while True:
sock.sendto(res, (MCAST_GRP, MCAST_PORT))
Я использовал этот код для непрерывной отправки данных. Но он загружается со скоростью около 20 Мбит / с и замораживает мою сеть, что требует перезапуска моего маршрутизатора. Если я удаляю while True
, то он отправляет только один раз.
В любом случае, в python они будут передавать данные непрерывно и не замораживать сеть?
Комментарии:
1. Это зависит от того, что вы пытаетесь сделать, возможно, вам следует подробнее остановиться на этом. Добавление
sleep(0.001)
может помочь вам решить вашу проблему. Кроме того, если вы говорите, что вам нужно перезапустить маршрутизатор, который указывает на проблему в другом месте, мы генерируем более 300 МБ многоадресной рассылки без каких-либо проблем2. Это замораживает вашу сеть, потому что вы заполняете ее UDP-пакетами. Зачем вам это делать в любом случае? Чего именно вы пытаетесь достичь?
3. @freakish Я подключил свой мобильный телефон к программе python. Я хочу показать все устройства, которые подключены к одной сети.
4. @SedyVlk Я чувствую, что мой маршрутизатор не способен обрабатывать столько загрузки. Данных не так много, я отправляю всего 3 строки данных, которые я конвертирую в JSON и отправляю их непрерывно, вызывая эту проблему.
5. @ShraddhaGami хорошо, но почему вы заполняете сеть циклом «while true»? Разве вы не можете отправить около 10 udp-пакетов и дождаться ответа?