如何在UDP中实现部分广播?

1 投票
1 回答
629 浏览
提问于 2025-04-17 11:59

我想通过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

当你发送一个广播IP数据包时,其实只是从发送者的机器发出一个数据包。没有办法知道谁收到了这个数据包,因为同一个网络上的每一台机器都会收到它。

基本的IP数据包地址有两种选择:

  • 发送到一个单独的IP地址
  • 发送到子网的广播地址

你也许可以使用“多播”来解决你的问题,但这要复杂得多。

撰写回答