如何在UDP中实现部分广播?
我想通过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地址
- 发送到子网的广播地址
你也许可以使用“多播”来解决你的问题,但这要复杂得多。