.. _TCPIP-AT: TCP/IP AT 命令 ================== :link_to_translation:`en:[English]` - :ref:`AT+CIPV6 `: 启用/禁用 IPv6 网络 (IPv6) - :ref:`AT+CIPSTATE `:查询 TCP/UDP/SSL 连接信息 - :ref:`AT+CIPSTATUS (弃用) `:查询 TCP/UDP/SSL 连接状态和信息 - :ref:`AT+CIPDOMAIN `:域名解析 - :ref:`AT+CIPSTART `:建立 TCP 连接、UDP 传输或 SSL 连接 - :ref:`AT+CIPSTARTEX `:建立自动分配 ID 的 TCP 连接、UDP 传输或 SSL 连接 - :ref:`[仅适用透传模式] +++ `: 退出 :term:`透传模式` - :ref:`AT+CIPSEND `:在 :term:`普通传输模式` 或 Wi-Fi :term:`透传模式` 下发送数据 - :ref:`AT+CIPSENDEX `:在 :term:`普通传输模式` 下采用扩展的方式发送数据 - :ref:`AT+CIPCLOSE `:关闭 TCP/UDP/SSL 连接 - :ref:`AT+CIFSR `:查询本地 IP 地址和 MAC 地址 - :ref:`AT+CIPMUX `:启用/禁用多连接模式 - :ref:`AT+CIPSERVER `:建立/关闭 TCP 或 SSL 服务器 - :ref:`AT+CIPSERVERMAXCONN `:查询/设置服务器允许建立的最大连接数 - :ref:`AT+CIPMODE `:查询/设置传输模式 - :ref:`AT+SAVETRANSLINK `:设置开机 :term:`透传模式` 信息 - :ref:`AT+CIPSTO `:查询/设置本地 TCP 服务器超时时间 - :ref:`AT+CIPSNTPCFG `:查询/设置时区和 SNTP 服务器 - :ref:`AT+CIPSNTPTIME `:查询 SNTP 时间 - :ref:`AT+CIUPDATE `:通过 Wi-Fi 升级固件 - :ref:`AT+CIPDINFO `:设置 +IPD 消息详情 - :ref:`AT+CIPSSLCCONF `:查询/设置 SSL 客户端配置 - :ref:`AT+CIPSSLCCN `:查询/设置 SSL 客户端的公用名 (common name) - :ref:`AT+CIPSSLCSNI `:查询/设置 SSL 客户端的 SNI - :ref:`AT+CIPSSLCALPN `:查询/设置 SSL 客户端 ALPN - :ref:`AT+CIPSSLCPSK `:查询/设置 SSL 客户端的 PSK - :ref:`AT+CIPRECONNINTV `:查询/设置 Wi-Fi :term:`透传模式` 下的 TCP/UDP/SSL 重连间隔 - :ref:`AT+CIPRECVMODE `:查询/设置 socket 接收模式 - :ref:`AT+CIPRECVDATA `:获取被动接收模式下的 socket 数据 - :ref:`AT+CIPRECVLEN `:查询被动接收模式下 socket 数据的长度 - :ref:`AT+PING `:ping 对端主机 - :ref:`AT+CIPDNS `:查询/设置 DNS 服务器信息 - :ref:`AT+CIPTCPOPT `:查询/设置 socket 选项 .. _cmd-IPV6: :ref:`AT+CIPV6 `: 启用/禁用 IPv6 网络 (IPv6) ------------------------------------------------------------------ 查询命令 ^^^^^^^^^^^^ **功能:** 查询 IPv6 网络是否使能 **命令:** :: AT+CIPV6? **响应:** :: +CIPV6: OK 设置命令 ^^^^^^^^^^^^^^ **功能:** 启用/禁用 IPv6 网络 **命令:** :: AT+CIPV6= **响应:** :: OK 参数 ^^^^ - ****: IPv6 网络使能状态。 默认值:0 - 0: 禁用 IPv6 网络 - 1: 启用 IPv6 网络 说明 ^^^^ - 在使用基于 IPv6 网络的上层应用前,需要先启用 IPv6 网络。(例如:基于 IPv6 网络使用 TCP/UDP/SSL/PING/DNS,也称为 TCP6/UDP6/SSL6/PING6/DNS6 或 TCPv6/UDPv6/SSLv6/PINGv6/DNSv6) .. _cmd-IPSTATE: :ref:`AT+CIPSTATE `:查询 TCP/UDP/SSL 连接信息 ----------------------------------------------------------------------------------------- 查询命令 ^^^^^^^^ **命令:** :: AT+CIPSTATE? **响应:** 当有连接时,AT 返回: :: +CIPSTATE:,<"type">,<"remote IP">,,, OK 当没有连接时,AT 返回: :: OK 参数 ^^^^ - ****:网络连接 ID (0 ~ 4),用于多连接的情况 - **<"type">**:字符串参数,表示传输类型:"TCP"、"UDP"、"SSL"、"TCPv6"、"UDPv6" 或 "SSLv6" - **<"remote IP">**:字符串参数,表示远端 IPv4 地址或 IPv6 地址 - ****:远端端口值 - ****:本地端口值 - ****: - 0: ESP 设备作为客户端 - 1: ESP 设备作为服务器 .. _cmd-STATUS: :ref:`AT+CIPSTATUS (弃用) `:查询 TCP/UDP/SSL 连接状态和信息 ----------------------------------------------------------------------------------------- 执行命令 ^^^^^^^^ **命令:** :: AT+CIPSTATUS **响应:** :: STATUS: +CIPSTATUS:,<"type">,<"remote IP">,,, OK 参数 ^^^^ - ****:ESP station 接⼝的状态 - 0: ESP station 为未初始化状态 - 1: ESP station 为已初始化状态,但还未开始 Wi-Fi 连接 - 2: ESP station 已连接 AP,获得 IP 地址 - 3: ESP station 已建立 TCP、UDP 或 SSL 传输 - 4: ESP 设备所有的 TCP、UDP 和 SSL 均断开 - 5: ESP station 开始过 Wi-Fi 连接,但尚未连接上 AP 或从 AP 断开 - ****:网络连接 ID (0 ~ 4),用于多连接的情况 - **<"type">**:字符串参数,表示传输类型:"TCP"、"UDP"、"SSL"、"TCPv6"、"UDPv6" 或 "SSLv6" - **<"remote IP">**:字符串参数,表示远端 IPv4 地址或 IPv6 地址 - ****:远端端口值 - ****:ESP 本地端口值 - ****: - 0: ESP 设备作为客户端 - 1: ESP 设备作为服务器 .. _cmd-DOMAIN: :ref:`AT+CIPDOMAIN `:域名解析 ------------------------------------------------------ 设置命令 ^^^^^^^^ **命令:** :: AT+CIPDOMAIN=<"domain name">[,] **响应:** :: +CIPDOMAIN:<"IP address"> OK 参数 ^^^^ - **<"domain name">**:待解析的域名 - ****:首选 IP 网络。默认值:1 - 1:首选解析为 IPv4 地址 - 2:只解析为 IPv4 地址 - 3:只解析为 IPv6 地址 - **<"IP address">**:解析出的 IP 地址 示例 ^^^^ :: AT+CWMODE=1 // 设置 station 模式 AT+CWJAP="SSID","password" // 连接网络 AT+CIPDOMAIN="iot.espressif.cn" // 域名解析 // 域名解析,只解析为 IPv4 地址 AT+CIPDOMAIN="iot.espressif.cn",2 // 域名解析,只解析为 IPv6 地址 AT+CIPDOMAIN="ipv6.test-ipv6.com",3 // 域名解析,首选解析为 IPv4 地址 AT+CIPDOMAIN="ds.test-ipv6.com",1 .. _cmd-START: :ref:`AT+CIPSTART `:建立 TCP 连接、UDP 传输或 SSL 连接 ------------------------------------------------------------------------------------------------------ 建立 TCP 连接 ^^^^^^^^^^^^^^^^^^^^^^^^ 设置命令 """""""""""""" **命令:** :: // 单连接 (AT+CIPMUX=0): AT+CIPSTART=<"type">,<"remote host">,[,][,<"local IP">] // 多连接 (AT+CIPMUX=1): AT+CIPSTART=,<"type">,<"remote host">,[,][,<"local IP">] **响应:** :: CONNECT OK 参数 """" - ****:网络连接 ID (0 ~ 4),用于多连接的情况 - **<"type">**:字符串参数,表示网络连接类型,"TCP" 或 "TCPv6"。默认值:"TCP" - **<"remote host">**:字符串参数,表示远端 IPv4 地址、IPv6 地址,或域名 - ****:远端端口值 - ****:TCP keep-alive 间隔,默认值:0 - 0: 禁用 TCP keep-alive 功能 - 1 ~ 7200: 检测间隔,单位:秒 - **<"local IP">**:连接绑定的本机 IPv4 地址或 IPv6 地址,该参数在本地多网络接口时和本地多 IP 地址时非常有用。默认为禁用,如果您想使用,需自行设置,空值也为有效值 说明 """""" - 如果想基于 IPv6 网络建立 TCP 连接,需要先设置 :ref:`AT+CIPV6=1 `,再通过 :ref:`AT+CWJAP ` 获取到一个 IPv6 地址 - ```` 参数最终会配置到 socket 选项 ``TCP_KEEPIDLE``,keepalive 另外的 socket 选项 ``TCP_KEEPINTVL`` 默认会使用 ``1``,``TCP_KEEPCNT`` 默认会使用 ``3`` 示例 """" :: AT+CIPSTART="TCP","iot.espressif.cn",8000 AT+CIPSTART="TCP","192.168.101.110",1000 AT+CIPSTART="TCP","192.168.101.110",1000,,"192.168.101.100" AT+CIPSTART="TCPv6","test-ipv6.com",80 AT+CIPSTART="TCPv6","fe80::860d:8eff:fe9d:cd90",1000,,"fe80::411c:1fdb:22a6:4d24" // esp-at 已通过 AT+CWJAP 获取到 IPv6 全局地址 AT+CIPSTART="TCPv6","2404:6800:4005:80b::2004",80,,"240e:3a1:2070:11c0:32ae:a4ff:fe80:65ac" 建立 UDP 传输 ^^^^^^^^^^^^^^^^^^^^^^^^ 设置命令 """""""""""""" **命令:** :: // 单连接:(AT+CIPMUX=0) AT+CIPSTART=<"type">,<"remote host">,[,,,<"local IP">] // 多连接:(AT+CIPMUX=1) AT+CIPSTART=,<"type">,<"remote host">,[,,,<"local IP">] **响应:** :: CONNECT OK 参数 """"""""""" - ****:网络连接 ID (0 ~ 4),用于多连接的情况 - **<"type">**:字符串参数,表示网络连接类型,"UDP" 或 "UDPv6"。默认值:"TCP" - **<"remote host">**:字符串参数,表示远端 IPv4 地址、IPv6 地址,或域名 - ****:远端端口值 - ****:ESP 设备的 UDP 端口值 - ****:在 UDP Wi-Fi 透传下,本参数的值必须设为 0 - 0: 接收到 UDP 数据后,不改变对端 UDP 地址信息(默认) - 1: 仅第一次接收到与初始设置不同的对端 UDP 数据时,改变对端 UDP 地址信息为发送数据设备的 IP 地址和端口 - 2: 每次接收到 UDP 数据时,都改变对端 UDP 地址信息为发送数据的设备的 IP 地址和端口 - **<"local IP">**:连接绑定的本机 IPv4 地址或 IPv6 地址,该参数在本地多网络接口时和本地多 IP 地址时非常有用。默认为禁用,如果您想使用,需自行设置,空值也为有效值 说明 """"" - 如果 UDP 连接中的远端 IP 地址是 IPv4 组播地址 (224.0.0.0 ~ 239.255.255.255),ESP 设备将发送和接收 UDPv4 组播 - 如果 UDP 连接中的远端 IP 地址是 IPv4 广播地址 (255.255.255.255),ESP 设备将发送和接收 UDPv4 广播 - 如果 UDP 连接中的远端 IP 地址是 IPv6 组播地址 (FF00:0:0:0:0:0:0:0 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF),ESP 设备将基于 IPv6 网络,发送和接收 UDP 组播 - 使用参数 ```` 前,需先设置参数 ```` - 如果想基于 IPv6 网络建立 UDP 连接,需要先设置 :ref:`AT+CIPV6=1 `, 再通过 :ref:`AT+CWJAP ` 获取到一个 IPv6 地址 示例 """"""""" :: // UDPv4 单播 AT+CIPSTART="UDP","192.168.101.110",1000,1002,2 AT+CIPSTART="UDP","192.168.101.110",1000,,,"192.168.101.100" // 基于 IPv6 网络的 UDP 单播 AT+CIPSTART="UDPv6","fe80::32ae:a4ff:fe80:65ac",1000,,,"fe80::5512:f37f:bb03:5d9b" // 基于 IPv6 网络的 UDP 多播 AT+CIPSTART="UDPv6","FF02::FC",1000,1002,0 建立 SSL 连接 ^^^^^^^^^^^^^^^^^^^^^^^^ 设置命令 """""""""""""" **命令:** :: AT+CIPSTART=[,]<"type">,<"remote host">,[,,<"local IP">] **响应:** :: OK 参数 """"""""""" - ****:网络连接 ID (0 ~ 4),用于多连接的情况 - **<"type">**:字符串参数,表示网络连接类型,"SSL" 或 "SSLv6"。默认值:"TCP" - **<"remote host">**:字符串参数,表示远端 IPv4 地址、IPv6 地址,或域名 - ****:远端端口值 - ****:SSL 保留配置,默认值:0 - **<"local IP">**:连接绑定的本机 IPv4 地址或 IPv6 地址,该参数在本地多网络接口时和本地多 IP 地址时非常有用。默认为禁用,如果您想使用,需自行设置,空值也为有效值 说明 """""" - SSL 连接数量取决于可用内存和最大连接数量;由于内存的限制,ESP8266 只能够创建一条 SSL 连接 - SSL 连接需占用大量内存,内存不足会导致系统重启 - 如果 ``AT+CIPSTART`` 命令是基于 SSL 连接,且每个数据包的超时时间为 10 秒,则总超时时间会变得更长,具体取决于握手数据包的个数 - 如果想基于 IPv6 网络建立 SSL 连接,需要先设置 :ref:`AT+CIPV6=1 `, 再通过 :ref:`AT+CWJAP ` 获取到一个 IPv6 地址 - ```` 参数最终会配置到 socket 选项 ``TCP_KEEPIDLE``,keepalive 另外的 socket 选项 ``TCP_KEEPINTVL`` 默认会使用 ``1``,``TCP_KEEPCNT`` 默认会使用 ``3`` 示例 """""""" :: AT+CIPSTART="SSL","iot.espressif.cn",8443 AT+CIPSTART="SSL","192.168.101.110",1000,,"192.168.101.100" // esp-at 已通过 AT+CWJAP 获取到 IPv6 全局地址 AT+CIPSTART="SSLv6","240e:3a1:2070:11c0:6972:6f96:9147:d66d",1000,,"240e:3a1:2070:11c0:55ce:4e19:9649:b75" .. _cmd-STARTEX: :ref:`AT+CIPSTARTEX `:建立自动分配 ID 的 TCP 连接、UDP 传输或 SSL 连接 ------------------------------------------------------------------------------------------------------------------ 本命令与 :ref:`AT+CIPSTART ` 相似,不同点在于:在多连接的情况下 (:ref:`AT+CIPMUX=1 `) 无需手动分配 ID,系统会自动为新建的连接分配 ID。 .. _cmd-PLUS: :ref:`[仅适用透传模式] +++ `:退出 :term:`透传模式` -------------------------------------------------------------------------- 特殊执行命令 ^^^^^^^^^^^^^^^^^^^^^^^^ **功能:** 退出 :term:`透传模式`,进入 :term:`透传接收模式` **Command:** :: // 仅适用透传模式 +++ 说明 """""" - 此特殊执行命令包含有三个相同的 ``+`` 字符(即 ASCII 码:0x2b),同时命令结尾没有 CR-LF 字符 - 确保第一个 ``+`` 字符前至少有 20 ms 时间间隔内没有其他输入,第三个 ``+`` 字符后至少有 20 ms 时间间隔内没有其他输入,三个 ``+`` 字符之间至多有 20 ms 时间间隔内没有其他输入。否则,``+`` 字符会被当做普通透传数据发送出去 - 本条特殊执行命令没有命令回复 .. _cmd-SEND: :ref:`AT+CIPSEND `:在 :term:`普通传输模式` 或 Wi-Fi :term:`透传模式` 下发送数据 ------------------------------------------------------------------------------------------------------------------ 设置命令 ^^^^^^^^ **功能:** :term:`普通传输模式` 下,指定长度发送数据 **命令:** :: // 单连接:(AT+CIPMUX=0) AT+CIPSEND= // 多连接:(AT+CIPMUX=1) AT+CIPSEND=, // UDP 传输可指定对端主机和端口 AT+CIPSEND=[,][,<"remote host">,] **响应:** :: OK > 上述响应表示 AT 已准备好接收串行数据,此时您可以输入数据,当 AT 接收到的数据长度达到 ```` 后,数据传输开始。 如果未建立连接或数据传输时连接被断开,返回: :: ERROR 如果数据传输成功,返回: :: SEND OK 执行命令 ^^^^^^^^ **功能:** 进入 Wi-Fi :term:`透传模式` **命令:** :: AT+CIPSEND **响应:** :: OK > 或 :: ERROR 进入 Wi-Fi :term:`透传模式`,ESP8266 设备每次最大接收 2048 字节,最大发送 1460 字节;其他 ESP 设备每次最大接收 8192 字节,最大发送 2920 字节。如果当前接收的数据长度大于最大发送字节数,AT 将立即发送;否则,接收的数据将在 20 ms 内发送。当输入单独一包 :ref:`+++ ` 时,退出 :term:`透传模式` 下的数据发送模式,请至少间隔 1 秒再发下一条 AT 命令。 本命令必须在开启 :term:`透传模式` 以及单连接下使用。若为 Wi-Fi UDP 透传,:ref:`AT+CIPSTART ` 命令的参数 ```` 必须设置为 0。 参数 ^^^^ - ****:网络连接 ID (0 ~ 4),用于多连接的情况 - ****:数据长度,最大值:2048 字节 - **<"remote host">**:UDP 传输可以指定对端主机:IPv4 地址、IPv6 地址,或域名 - ****:UDP 传输可以指定对端端口 .. _cmd-SENDEX: :ref:`AT+CIPSENDEX `:在 :term:`普通传输模式` 下采用扩展的方式发送数据 ---------------------------------------------------------------------------------------------- 设置命令 ^^^^^^^^ **功能:** :term:`普通传输模式` 下,指定长度发送数据,或者使用字符串 ``\0`` (0x5c, 0x30 ASCII) 触发数据发送 **命令:** :: // 单连接:(AT+CIPMUX=0) AT+CIPSENDEX= // 多连接:(AT+CIPMUX=1) AT+CIPSENDEX=, // UDP 传输可指定对端 IP 地址和端口: AT+CIPSENDEX=[,][,<"remote host">,] **响应:** :: OK > 上述响应表示 AT 已准备好接收串行数据,此时您可以输入指定长度的数据,当 AT 接收到的数据长度达到 ```` 后或数据中出现 ``\0`` 字符时,数据传输开始。 如果未建立连接或数据传输时连接被断开,返回: :: ERROR 如果数据传输成功,返回: :: SEND OK 参数 ^^^^ - ****:网络连接 ID (0 ~ 4),用于多连接的情况 - ****:数据长度,最大值:2048 字节 - **<"remote host">**:UDP 传输可以指定对端主机:IPv4 地址、IPv6 地址,或域名 - ****:UDP 传输可以指定对端端口 说明 ^^^^^ - 当数据长度满足要求时,或数据中出现 ``\0`` 字符时 (0x5c,0x30 ASCII),数据传输开始,系统返回普通命令模式,等待下一条 AT 命令 - 如果数据中包含 ``\``,则会去掉反斜杠,只使用 ```` 符号 - 如果需要发送 ``\0``,请转义为 ``\\0`` .. _cmd-CLOSE: :ref:`AT+CIPCLOSE `:关闭 TCP/UDP/SSL 连接 ---------------------------------------------------------------------------- 设置命令 ^^^^^^^^^^ **功能:** 关闭多连接模式下的 TCP/UDP/SSL 连接 **命令:** :: AT+CIPCLOSE= 执行命令 ^^^^^^^^^^ **功能:** 关闭单连接模式下的 TCP/UDP/SSL 连接 :: AT+CIPCLOSE **响应:** :: OK 参数 ^^^^ - ****:需关闭的网络连接 ID,如果设为 5,则表示关闭所有连接 .. _cmd-IFSR: :ref:`AT+CIFSR `:查询本地 IP 地址和 MAC 地址 -------------------------------------------------------------- 执行命令 ^^^^^^^^ **命令:** :: AT+CIFSR **响应:** :: +CIFSR:APIP,<"APIP"> +CIFSR:APIP6LL,<"APIP6LL"> +CIFSR:APIP6GL,<"APIP6GL"> +CIFSR:APMAC,<"APMAC"> +CIFSR:STAIP,<"STAIP"> +CIFSR:STAIP6LL,<"STAIP6LL"> +CIFSR:STAIP6GL,<"STAIP6GL"> +CIFSR:STAMAC,<"STAMAC"> +CIFSR:ETHIP,<"ETHIP"> +CIFSR:ETHIP6LL,<"ETHIP6LL"> +CIFSR:ETHIP6GL,<"ETHIP6GL"> +CIFSR:ETHMAC,<"ETHMAC"> OK 参数 ^^^^ - **<"APIP">**: ESP SoftAP 的 IPv4 地址 - **<"APIP6LL">**: ESP SoftAP 的 IPv6 本地链路地址 - **<"APIP6GL">**: ESP SoftAP 的 IPv6 全局地址 - **<"APMAC">**: ESP SoftAP 的 MAC 地址 - **<"STAIP">**: ESP station 的 IPv4 地址 - **<"STAIP6LL">**: ESP station 的 IPv6 本地链路地址 - **<"STAIP6GL">**: ESP station 的 IPv6 全局地址 - **<"STAMAC">**: ESP station 的 MAC 地址 - **<"ETHIP">**: ESP ethernet 的 IPv4 地址 - **<"ETHIP6LL">**: ESP ethernet 的 IPv6 本地链路地址 - **<"ETHIP6GL">**: ESP ethernet 的 IPv6 全局地址 - **<"ETHMAC">**: ESP ethernet 的 MAC 地址 说明 ^^^^ - 只有当 ESP 设备获取到有效接口信息后,才能查询到它的 IP 地址和 MAC 地址 .. _cmd-MUX: :ref:`AT+CIPMUX `:启用/禁用多连接模式 --------------------------------------------------------------------- 查询命令 ^^^^^^^^ **功能:** 查询连接模式 **命令:** :: AT+CIPMUX? **响应:** :: +CIPMUX: OK 设置命令 ^^^^^^^^ **功能:** 设置连接模式 **命令:** :: AT+CIPMUX= **响应:** :: OK 参数 ^^^^ - ****:连接模式,默认值:0 - 0: 单连接 - 1: 多连接 说明 ^^^^ - 只有当所有连接都断开时才可更改连接模式 - 只有 :term:`普通传输模式` (:ref:`AT+CIPMODE=0 `),才能设置为多连接 - 如果建立了 TCP/SSL 服务器,想切换为单连接,必须关闭服务器 (:ref:`AT+CIPSERVER=0 `) 示例 ^^^^ :: AT+CIPMUX=1 .. _cmd-SERVER: :ref:`AT+CIPSERVER `:建立/关闭 TCP 或 SSL 服务器 ------------------------------------------------------------------------------------ 查询命令 ^^^^^^^^ **功能:** 查询 TCP/SSL 服务器状态 **命令:** :: AT+CIPSERVER? **响应:** :: +CIPSERVER:[,,<"type">][,] OK 设置命令 ^^^^^^^^ **命令:** :: AT+CIPSERVER=[,][,<"type">][,] **响应:** :: OK 参数 ^^^^ - ****: - 0: 关闭服务器 - 1: 建立服务器 - ****:参数 ```` 不同,则此参数意义不同: - 如果 ```` 是 1,```` 代表端口号。默认值:333 - 如果 ```` 是 0,```` 代表服务器是否关闭所有客户端。默认值:0 - 0:关闭服务器并保留现有客户端连接 - 1:关闭服务器并关闭所有连接 - **<"type">**:服务器类型:"TCP","TCPv6","SSL",或 "SSLv6". 默认值:"TCP"。由于内存限制,此参数不适用于 ESP8266 设备 - ****:由于内存限制,此参数不适用于 ESP8266 设备 - 0:不使用 CA 认证 - 1:使用 CA 认证 说明 ^^^^ - 多连接情况下 (:ref:`AT+CIPMUX=1 `),才能开启服务器 - 创建服务器后,自动建立服务器监听,最多只允许创建一个服务器 - 当有客户端接入,会自动占用一个连接 ID - 如果想基于 IPv6 网络建立服务器,需要先设置 :ref:`AT+CIPV6=1 `,再通过 :ref:`AT+CWJAP ` 获取到一个 IPv6 地址 示例 ^^^^ :: // 建立 TCP 服务器 AT+CIPMUX=1 AT+CIPSERVER=1,80 // 建立 SSL 服务器 AT+CIPMUX=1 AT+CIPSERVER=1,443,"SSL",1 // 基于 IPv6 网络,创建 SSL 服务器 AT+CIPMUX=1 AT+CIPSERVER=1,443,"SSLv6",0 // 关闭服务器并且关闭所有连接 AT+CIPSERVER=0,1 .. _cmd-SERVERMAX: :ref:`AT+CIPSERVERMAXCONN `:查询/设置服务器允许建立的最大连接数 -------------------------------------------------------------------------------------------------------------- 查询命令 ^^^^^^^^ **功能:** 查询 TCP 或 SSL 服务器允许建立的最大连接数 **命令:** :: AT+CIPSERVERMAXCONN? **响应:** :: +CIPSERVERMAXCONN: OK 设置命令 ^^^^^^^^ **功能:** 设置 TCP 或 SSL 服务器允许建立的最大连接数 **命令:** :: AT+CIPSERVERMAXCONN= **响应:** :: OK 参数 ^^^^ - ****:TCP 或 SSL 服务器允许建立的最大连接数 说明 ^^^^ - 如需设置最大连接数 (``AT+CIPSERVERMAXCONN=``),请在创建服务器之前设置。 示例 ^^^^ :: AT+CIPMUX=1 AT+CIPSERVERMAXCONN=2 AT+CIPSERVER=1,80 .. _cmd-IPMODE: :ref:`AT+CIPMODE `:查询/设置传输模式 ------------------------------------------------------------------ 查询命令 ^^^^^^^^ **功能:** 查询传输模式 **命令:** :: AT+CIPMODE? **响应:** :: +CIPMODE: OK 设置命令 ^^^^^^^^ **功能:** 设置传输模式 **命令:** :: AT+CIPMODE= **响应:** :: OK 参数 ^^^^ - ****: - 0: :term:`普通传输模式` - 1: Wi-Fi :term:`透传接收模式`,仅支持 TCP 单连接、UDP 固定通信对端、SSL 单连接的情况 说明 ^^^^ - 配置更改不保存到 flash。 示例 ^^^^ :: AT+CIPMODE=1 .. _cmd-SAVET: :ref:`AT+SAVETRANSLINK `:设置开机 :term:`透传模式` 信息 ------------------------------------------------------------------------------------- 设置开机进入 TCP/SSL :term:`透传模式` 信息 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 设置命令 """""""""""""" **命令:** :: AT+SAVETRANSLINK=,<"remote host">,[,<"type">,] **响应:** :: OK 参数 """""""""""""" - ****: - 0: 关闭 ESP 上电进入 Wi-Fi :term:`透传模式` - 1: 开启 ESP 上电进入 Wi-Fi :term:`透传模式` - **<"remote host">**:字符串参数,表示远端 IPv4 地址、IPv6 地址,或域名 - ****:远端端口值 - **<"type">**:字符串参数,表示传输类型:"TCP","TCPv6","SSL",或 "SSLv6"。默认值:"TCP" - ****:TCP keep-alive 间隔,默认值:0 - 0: 禁用 keep-alive 功能 - 1 ~ 7200: 检测间隔,单位:秒 说明 """"""" - 本设置将 Wi-Fi 开机 :term:`透传模式` 信息保存在 NVS 区,若参数 ```` 为 1 ,下次上电自动进入 :term:`透传模式`。需重启生效。 - 只要远端 IP 地址(域名)、端口的值符合规范,本设置就会被保存到 flash。 - 如果想基于 IPv6 网络建立透传连接,需要先设置 :ref:`AT+CIPV6=1 `,再通过 :ref:`AT+CWJAP ` 获取到一个 IPv6 地址 示例 """""""" :: AT+SAVETRANSLINK=1,"192.168.6.110",1002,"TCP" AT+SAVETRANSLINK=1,"www.baidu.com",443,"SSL" AT+SAVETRANSLINK=1,"240e:3a1:2070:11c0:55ce:4e19:9649:b75",8080,"TCPv6" AT+SAVETRANSLINK=1,"240e:3a1:2070:11c0:55ce:4e19:9649:b75",8080,"SSLv6 设置开机进入 UDP :term:`透传模式` 信息 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 设置 """" **命令:** :: AT+SAVETRANSLINK=,<"remote host">,,[<"type">,] **响应:** :: OK 参数 """" - ****: - 0: 关闭 ESP 上电进入 Wi-Fi :term:`透传模式` - 1: 开启 ESP 上电进入 Wi-Fi :term:`透传模式` - **<"remote host">**:字符串参数,表示远端 IPv4 地址、IPv6 地址,或域名 - ****:远端端口值 - **<"type">**:字符串参数,表示传输类型:"UDP" 或 "UDPv6"。默认值:"TCP" - **[]**:开机进入 UDP 传输时,使用的本地端口 说明 """"""" - 本设置将 Wi-Fi 开机 :term:`透传模式` 信息保存在 NVS 区,若参数 ```` 为 1 ,下次上电自动进入 :term:`透传模式`。需重启生效 - 只要远端 IP 地址(域名)、端口的值符合规范,本设置就会被保存到 flash - 如果想基于 IPv6 网络建立透传连接,需要先设置 :ref:`AT+CIPV6=1 `,再通过 :ref:`AT+CWJAP ` 获取到一个 IPv6 地址 示例 """"""""" :: AT+SAVETRANSLINK=1,"192.168.6.110",1002,"UDP",1005 AT+SAVETRANSLINK=1,"240e:3a1:2070:11c0:55ce:4e19:9649:b75",8081,"UDPv6",1005 .. _cmd-STO: :ref:`AT+CIPSTO `:查询/设置本地 TCP/SSL 服务器超时时间 ---------------------------------------------------------------------------------------- 查询命令 ^^^^^^^^ **功能:** 查询本地 TCP/SSL 服务器超时时间 **命令:** :: AT+CIPSTO? **响应:** :: +CIPSTO: