编写一个广播数据报程序。具体的,自定义一个组播地址及端口号,广播端每隔5秒发送当前的时间;定义一个接收端接收广播端发送的数据,并将收到的数据显示在命令行窗口中
时间: 2024-03-02 14:49:47 浏览: 58
好的,我来为您解答。首先,需要使用 Python 的 socket 模块实现广播数据报程序。
广播端代码:
```python
import socket
import time
# 自定义组播地址和端口号
multicast_group = '224.1.1.1'
server_address = ('', 10000)
# 创建 UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 设置 TTL 为 1,即本地网络范围内广播
ttl = struct.pack('b', 1)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, ttl)
# 发送数据
while True:
message = time.ctime().encode('utf-8')
sock.sendto(message, (multicast_group, 10000))
time.sleep(5)
```
接收端代码:
```python
import socket
# 自定义组播地址和端口号
multicast_group = '224.1.1.1'
server_address = ('', 10000)
# 创建 UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定端口
sock.bind(server_address)
# 加入组播组
group = socket.inet_aton(multicast_group) + socket.inet_aton('0.0.0.0')
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, group)
# 接收数据
while True:
data, address = sock.recvfrom(1024)
print('Received {} bytes from {}: {}'.format(len(data), address, data.decode('utf-8')))
```
在运行广播端程序和接收端程序之后,您可以在接收端的命令行窗口中看到每隔 5 秒钟收到一次当前时间的广播数据报。
阅读全文