Python网络进阶

  • 很好,看来你已经实现了Python网络基础知识的学习。

Python与UDP网络

UDP数据的发送和接收

  • UDP数据的发送和接收也依赖socket。

UDP实现广播

  • UDP广播可以实现一个终端向局域网内所有设备发送数据。具体的步骤如下:

0. 连接网络

1. 新建一个socket对象,并配置为广播模式

import socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

2. 获取本地IP地址

在Python和MicroPython中,获取本地IP地址有不同方法:

Python

def get_local_ip_address():
    try:
        # 创建一个 UDP 套接字
        temp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        temp_socket.connect(("8.8.8.8", 80))  # 连接到一个公共的 IP 地址
        local_ip_address = temp_socket.getsockname()[0]  # 获取套接字的本地地址
        temp_socket.close()  # 关闭套接字
        return local_ip_address
    except Exception as e:
        print("Failed to get local IP address:", e)
        return None

MicroPython

wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.connect("网络名","网络密码")
    while not wlan.isconnected():
          time.sleep(0.1)
    #wlan.ifconfig((ip, mask, gate,dns))
    self.ip=wlan.ifconfig()[0]

3. 将IP最后一位改为255,然后发送

UDP发送数据时,如果将目标IP的最后一位定义为255,则表示广播。

ip_parts = ip.split('.')
ip_parts[-1] = '255'
bip= '.'.join(ip_parts)
udp_socket.sendto(data, (bip, o_port))
作者:admin  创建时间:2024-03-21 10:20
最后编辑:admin  更新时间:2024-07-17 11:01