Как сделать частичную трансляцию в UDP? - PullRequest
1 голос
/ 31 января 2012

Я хотел бы отправить сообщение по UDP в широковещательной рассылке, кроме ip=123.123.123.123, есть ли способ сделать это?

как мне изменить этот код:

MYPORT = 8080

import sys, time
from socket import *

s = socket(AF_INET, SOCK_DGRAM)
s.bind(('', 0))
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)

while 1:
    data = 'python is awesome' + '\n'
    s.sendto(data, ('<broadcast>', MYPORT))
    time.sleep(2)

1 Ответ

1 голос
/ 31 января 2012

Когда вы отправляете широковещательный IP-пакет, отправитель отправляет только один пакет. Нет никакого способа определить, кто получает это, потому что каждая машина в той же сети получает это.

Базовая IP-пакетная адресация имеет два варианта:

  • отправить на один IP-адрес
  • отправить в подсеть широковещательный адрес

Возможно, вы сможете использовать «групповое вещание» для решения вашей проблемы, но это значительно сложнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...