乐鑫技术交流
直播中

李燕

7年用户 1535经验值
私信 关注
[问答]

服务器在每个AT CIPSEND命令之后关闭连接,为什么?

我有一个 ESP-12f 模块,我要用它来从我们公司的服务器下载几百个小文件。不幸的是,每次我下载单个文件时,连接都会关闭,我必须重新建立新的TCP连接。我已经在多个服务器上尝试过这个,总是得到相同的结果。例如,当我在 Google 上发出这些命令时:

AT+CIPSTART="TCP","google.com",80
在 cipsend=29


Google sends me the webpage data that finishes with: "CLOSE" . And then I cannot issue any new CIPSEND commands unless I re-establish the connection using AT+CIPSTART="TCP","google.com",80 .

Since a TCP connection takes about 1 second to establish and I need to repeat this hundreds of times, I lose a lot of time when downloading multiple files. I also used the "TCP keep alive" parameter from the datasheet that is explained like this:

[] optional, detection time interval when TCP is kept alive,
默认情况下,此功能处于关闭状态。
0 : 禁用 TCP 保持连接状态
1~7200:检测时间间隔,单位:秒

我像这样使用了 1 和 1000:

AT+CIPSTART="TCP","google.com",80,1

AT+CIPSTART="TCP","google.com",80,1000

但是以上方法似乎都不起作用,并且在下载一个文件后,连接仍会立即关闭。

在我自己手动关闭它之前,有没有办法保持连接活动?
              

回帖(1)

秋风宜人

2024-7-15 16:51:57
这个问题可能是由于ESP-12F模块的默认设置导致的。在某些情况下,模块可能在发送完数据后自动关闭连接。为了解决这个问题,您可以尝试以下步骤:

1. 首先,确保您的ESP-12F模块固件是最新的。如果不是,请更新固件。

2. 在发送AT+CIPSTART命令之前,发送以下命令以设置模块在发送完数据后不自动关闭连接:

```
AT+CIPMODE=0
```

这个命令将设置模块为透传模式,这样在发送完数据后,连接不会自动关闭。

3. 发送AT+CIPSTART命令以建立TCP连接:

```
AT+CIPSTART="TCP","google.com",80
```

4. 使用AT+CIPSEND命令发送数据:

```
AT+CIPSEND=29
```

5. 接收数据后,如果需要发送更多数据,可以继续使用AT+CIPSEND命令,而无需重新建立连接。

6. 当您完成所有数据传输后,可以使用以下命令关闭连接:

```
AT+CIPCLOSE
```

通过以上步骤,您应该可以在不重新建立连接的情况下发送多个文件。如果问题仍然存在,请检查您的网络环境和服务器设置,以确保没有其他因素导致连接关闭。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分