import network
import time
import socket

# 配置你的WiFi信息
WIFI_SSID = "Wifi名称"
WIFI_PASSWORD = "Wifi密码"

# 初始化网络接口
sta_if = network.WLAN(network.STA_IF)

def connect_wifi(max_retries=3, timeout=5):
    """
    连接WiFi网络
    参数:
        max_retries: 最大重试次数
        timeout: 每次连接超时时间(秒)
    返回:
        bool: 是否连接成功
    """
    if not sta_if.isconnected():
        print('正在连接WiFi...')
        sta_if.active(True)
        sta_if.connect(WIFI_SSID, WIFI_PASSWORD)
        
        retries = 0
        while not sta_if.isconnected() and retries < max_retries:
            print(f'尝试连接中... ({retries+1}/{max_retries})')
            time.sleep(timeout)
            retries += 1
            
        if sta_if.isconnected():
            print('连接成功!')
            print('网络配置:', sta_if.ifconfig())
            return True
        else:
            print('连接失败')
            return False
    else:
        print('已连接现有网络')
        return True

def test_network():
    """
    测试网络连通性
    通过尝试连接百度服务器来验证网络连接
    """
    s = None  # 确保socket对象在finally块中可用
    try:
        # 创建socket对象
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(5)  # 设置超时时间
        
        # 尝试连接百度服务器(使用www.baidu.com的80端口)
        addr = socket.getaddrinfo('www.baidu.com', 80)[0][-1]
        s.connect(addr)
        print('网络测试成功!可以访问互联网')
        return True
    except Exception as e:
        print('网络测试失败:', str(e))
        return False
    finally:
        if s:  # 确保socket对象存在再关闭
            s.close()

# 主程序
if __name__ == '__main__':
    if connect_wifi():
        print('正在测试网络连接...')
        if test_network():
            print('✅ 系统状态:网络连接正常')
        else:
            print('⚠️ 系统状态:WiFi已连接但无法访问互联网')
    else:
        print('❌ 系统状态:WiFi连接失败')