更改本地网络上的网页 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。
解决您的问题需要两个部分:
- 发布一个名字(使用mdns)
- 从客户端解析该名称
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()))
我在 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。
解决您的问题需要两个部分:
- 发布一个名字(使用mdns)
- 从客户端解析该名称
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()))