更改本地网络上的网页 url

Change url of a webpage on a local network

我在 ESP32 芯片上构建了一个网页,负责创建一个接入点,允许我的计算机连接以访问此页面。
目前我只能通过在浏览器中输入我的 ESP 的 IP 来访问它,但这可能非常麻烦。
我想知道是否可以使用单词而不是 ESP 的 IP 来更改页面的 url。
也许我遗漏了一些技术术语,但我没有在互联网上找到任何解决方案。

PS:我正在使用带套接字的 micropython 来为板上的 html 文件提供服务:

def handleClient(client_socket):
    headers, data = loadRequest(client_socket.recv(1024).decode('utf-8'))
    # print('[*] Received:\n%s\n%s\n' % (headers, data))
    if headers['method'] == 'GET' and '/connect' == headers['route']:#'/connect' in headers['route']:
        ssid, password, status, code = connect(headers)
        client_socket.sendall(RESPONSE_TEMPLATE % (code, status, {'ssid': ssid, 'password': password}, code))
        return ssid, password
    elif headers['method'] == 'GET' and headers['route'] == '/':
        renderWebPage(client_socket)
    client_socket.close()
    return None, None

当然可以。最简单的选项是启用 mDNS。这允许同一本地网络中的主机将设备的名称(例如 espressif.local)解析为其 IP。只能在本地网络中工作,并且需要在计算机上安装 mDNS 客户端(Mac、Linux 和 Windows 最近都倾向于内置它)。

但不知道如何在 Micropython 中执行此操作。试试 Google。

解决您的问题需要两个部分:

  1. 发布一个名字(使用mdns)
  2. 从客户端解析该名称

MicroPython 从 v1.12 开始 built-in 支持 mdns。 基本代码是使用以下内容分配主机名:

wlan.config(dhcp_hostname="prettyname")

请注意,您的客户端还需要有 mdns 支持才能解析该地址。 may/will 取决于您的客户。

一个完整的样本是:

import network
wlan = network.WLAN(network.STA_IF)
if not wlan.isconnected():
    wlan.active(True)
    mac = wlan.config('mac')
    host = "prettyname"
    wlan.config(dhcp_hostname = host)
    wlan.connect('myssid', 'mypassword')
    while not wlan.isconnected():
        pass
        
host = wlan.config('dhcp_hostname')
print('Wifi connected as {}/{}, net={}, gw={}, dns={}'.format(
    host, *wlan.ifconfig()))

Source: MicroPython Forum