TCP/IP指令集

AT+ CIPSTATUS:查询TCP/UDP/SSL连接状态和信息

查询命令

命令:

AT+CIPSTATUS?

返回:

+BIPSTATUS:<type>,<remoteip>,<port>,<localport>,<tetype>

参数

  • <type>:连接类型

    • 0: “TCP”

    • 1: “UDP”

    • 2: “TLS”

    • 3: “DTLS”

  • <remoteip>:远程连接IP

  • <port>:远程连接的端口

  • <localport>:连接的本地端口

  • <tetype>:

    • 0: 设备作为客户端

    • 1: 设备作为服务器

AT+CIPSTART:建立TCP连接、UDP 传输或 TLS连接

执行命令

命令:

AT+CIPSTART=<linkID>,<"type">,<remotehost>,<remoteport>[,<keepalive>,"localport"],<"localip">

返回:

OK

参数

  • <linkID>:网络连接 ID (0 ~ 5),最多支持6个连接

  • <”type”>:连接类型

    • 0: “TCP”

    • 1: “UDP”

    • 2: “TLS”

    • 3: “DTLS”

  • <remotehost>:远程连接IP

  • <remoteport>:远程连接的端口

  • <keepalive>:TCP keep-alive 间隔,默认值:0

    • 0: 禁用 TCP keep-alive 功能

    • 1 ~ 7200: 检测间隔,单位:秒

说明

  • 只能TCP有效,UDP不需要设置,此参数最终会配置到 socket 选项 TCP_KEEPIDLE,keepalive 另外的 socket 选项。

  • TCP_KEEPINTVL 默认会使用 1,TCP_KEEPCNT 默认会使用 3。

  • <”localport”>:本地端口,当需要设置为server时需要设置此端口。

  • <”localip”>:本地IP,当需要配置为server时需要配置此IP。

示例

//1.建立连接ID为0,keep-alive 1800秒一次的TCP 连接
AT+CIPSTART=0,"tcp","192.168.0.103",20108,1800

//2. 建立连接ID为1的TCP Server连接
AT+CIPSTART=2,"tcp","192.168.0.103",20108,1800, 5637, "192.168.0.107"

//3. 建立连接ID为1的UDP client连接
AT+CIPSTART=1,"udp","192.168.0.103",20108

//4.建立连接ID为1,本地端口为5637的UDP Server连接
AT+CIPSTART=1,"udp","192.168.0.103",20108,5637, "192.168.0.107"

AT+CIPSEND:在普通传输模式或 Wi-Fi 透传模式下发送数据

执行命令

命令:

//执行TCP数据发送
AT+CIPSEND=<linkID>,<length>

//执行UDP数据发送
AT+CIPSEND=<linkID>,<length>[,<"remotehost">,<remote port>]

返回:

>

上述响应表示 AT 已准备好接收串行数据,此时您可以输入数据,当AT接收到的数据长度达到<length>后,数据传输开始。 如果未建立连接或数据传输时连接被断开,返回:

CMDRSP:ERROR

如果数据传输成功,返回:

SEND OK

执行命令

功能:

  • 进入 Wi-Fi 透传模式

命令:

AT+CIPSEND

返回:

>

CMDRSP:ERROR

说明

  • 进入 Wi-Fi 透传模式,设备每次最大接收 1024 字节,最大发送 1460 字节;如果当前接收的数据长度大于最大发送字节数,AT 将立即发送;否则,接收的数据将在 20 ms 内发送。当输入单独一包+++ 时,退出透传模式下的数据发送模式,请至少间隔 1 秒再发下一条 AT 命令。本命令必须在开启透传模式 以及单连接下使用。

参数

  • <linkID>:网络连接 ID (0 ~ 4),用于多连接的情况

  • <length>:数据长度,最大值:2048 字节

  • <”remote host”>:UDP 传输可以指定对端主机:IPv4 地址或域名

  • <remote port>:UDP 传输可以指定对端端口

AT+CIPCLOSE:关闭 TCP/UDP/SSL 连接

执行命令

命令:

AT+CIPSEND=<linkID>

返回:

OK

参数

  • <linkID>:需关闭的网络连接 ID,如果设为 5,则表示关闭所有连接

AT+CIPMUX:启用/禁用多连接模式

查询命令

命令:

AT+CIPMUX?

返回:

+CIPMUX:<mode>
OK

执行命令

命令:

AT+CIPMUX=<mode>

返回:

OK

参数

  • <mode>:连接模式,默认值:0

    • 0: 单连接

    • 1: 多连接

说明

  • 只有当所有连接都断开时才可更改连接模式

  • 只有普通传输模式 (AT+CIPMODE=0),才能设置为多连接

AT+CIPMODE:查询/设置传输模式

查询命令

命令:

AT+CIPMODE?

返回:

+CIPMODE:<mode>
OK

执行命令

命令:

AT+CIPMODE=<mode>

返回:

OK

参数

  • <mode>:

    • 0: 普通传输模式

    • 1: Wi-Fi 透传接收模式,仅支持 TCP 单连接、UDP 固定通信对端、SSL 单连接的情况

AT+CIPSNTPCFG:查询/设置NTP服务器

查询命令

命令:

AT+CIPSNTPCFG?

返回:

+CIPSNTPCFG:<enable>,<timezone>,<SNTP server>
OK

执行命令

命令:

AT+CIPSNTPCFG=<enable>,<timezone>,<SNTP server>

返回:

OK

参数

  • <enable>:设置 SNTP 服务器:

    • 1: 设置 SNTP 服务器。

    • 0: 不设置 SNTP 服务器。

  • <timezone>:

    • 数值范围:[-12,12],它以小时为单位,通过与协调世界时 (UTC) 的偏移来标记大多数时区(UTC−12:00 至 UTC+12:00)

  • [<SNTP server>]: SNTP 服务器地址或域名。

示例

//使能 SNTP 服务器,设置中国时区 (UTC+08:00)
AT+CIPSNTPCFG=1,8,"cn.ntp.org.cn"

//使能 SNTP服务器,设置美国纽约的时区 (UTC−05:00)
AT+CIPSNTPCFG=1,-5,"0.pool.ntp.org"

AT+CIPSNTPTIME:查询SNTP时间

查询命令

命令:

AT+CIPSNTPTIME?

返回:

+CIPSNTPTIME:<asctime style time>
OK

示例

AT+CIPSNTPTIME?

+CIPSNTPTIME:2022-10-21 19:20:39
OK

AT+PING:ping对端主机

执行命令

命令:

AT+PING=<"host">

返回:

+PING:<time>

+PING:TIMEOUT

参数

  • <”host”>:字符串参数,表示对端主机的 IPv4 地址或域名。

  • <time>:ping 的响应时间,单位:毫秒。

AT+CIPDOMAIN:域名解析

执行命令

命令:

AT+CIPDOMAIN=<"domain name">

返回:

+CIPDOMAIN:<"IP address">
OK

参数

  • <”domain name”>:待解析的域名

  • <”IP address”>:解析出的 IP 地址

说明

  • 目前仅支持解析为 IPv4 地址

AT+CIPDNS:查询/设置 DNS 服务器信息

查询命令

命令:

AT+CIPDNS?

返回:

+CIPDNS:<enable>[,<"DNS IP1">,<"DNS IP2">,<"DNS IP3">]
OK

执行命令

命令:

AT+CIPDNS=<enable>[,<"DNS IP1">,<"DNS IP2">,<"DNS IP3">]

返回:

OK

ERROR

参数

  • <enable>:设置 DNS

    • 0: 启用自动获取 DNS 设置,DNS 将会恢复为 208.67.222.222,只有当 DHCP 更新时才会生效。

    • 1: 启用手动设置 DNS 信息,如果不设置参数 <DNS IPx> 的值,则使用默认值 208.67.222.222。

  • <DNS IP1>:第一个 DNS IP 地址,对于执行命令,只有当 <enable> 参数为 1 时,也就是启用手动 DNS 设置,本参数才有效。

  • <DNS IP2>:第二个 DNS IP 地址,对于执行命令,只有当 <enable> 参数为 1 时,也就是启用手动 DNS 设置,本参数才有效。

  • <DNS IP3>:第三个 DNS IP 地址,对于执行命令,只有当 <enable> 参数为 1 时,也就是启用手动 DNS 设置,本参数才有效。

说明

  • 若AT+SYSSTORE=1,配置更改将保存在 NVS 区。

AT+CIPSSLCPSK:查询/设置 SSL 客户端的 PSK

查询命令

命令:

AT+CIPSSLCPSK?

返回:

+CIPSSLCPSK:<linkID>,<"psk">,<"hint">
OK

执行命令

命令:

//单连接:(AT+CIPMUX=0)
AT+CIPSSLCPSK=<"psk">,<"hint">

//多连接:(AT+CIPMUX=1)
AT+CIPSSLCPSK=<linkID>,<"psk">,<"hint">

返回:

OK

参数

  • <linkID>:网络连接 ID (0 ~ max),在单连接的情况下,本参数值为 0;在多连接的情况下,若参数值设为 max,则表示所有连接;本参数默认值为 5。

  • <”psk”>:PSK identity,最大长度:48。

  • <”hint”>:PSK hint,最大长度:48。

说明

  • 如果想要本配置立即生效,请在建立 SSL 连接前运行本命令。

AT+CIPDNS:查询/设置 DNS 服务器信息

查询命令

命令:

AT+CIPDNS?

返回:

+CIPDNS:<enable>[,<"DNS IP1">,<"DNS IP2">,<"DNS IP3">]
OK

执行命令

命令:

AT+CIPDNS=<enable>[,<"DNS IP1">,<"DNS IP2">,<"DNS IP3">]

返回:

OK

ERROR

参数

  • <enable>:设置 DNS

    • 0: 启用自动获取 DNS 设置,DNS 将会恢复为 208.67.222.222,只有当 DHCP 更新时才会生效;

    • 1: 启用手动设置 DNS 信息,如果不设置参数 <DNS IPx> 的值,则使用默认值 208.67.222.222。

  • <DNS IP1>:第一个 DNS IP 地址。

  • <DNS IP2>:第二个 DNS IP 地址。

  • <DNS IP3>:第三个 DNS IP 地址。

说明

  • 若AT+SYSSTORE=1,配置更改将保存在 NVS 区。

  • 这三个参数不能设置在同一个服务器上。

  • 当 <enable> 为 0 时,DNS 服务器可能会根据设备所连接的路由器的配置而改变。