这是 TCP/IP 套接字编程的常见故事。我认为,如果您总体上研究 TCP/IP 套接字 API,您会发现答案将在 ESP32 环境中完美运行,并且您会对结果感到满意。TCP/IP 套接字是一个丰富而强大的 API,似乎已在 ESP32 中完全实现。如果你得到一本关于 TCP/IP 套接字的书并研究它,你将获得丰厚的回报。我相信您也可以从基于网络的文章中整合您的研究
在较高级别,您将创建一个执行以下操作的 C 应用程序:
代码:
int s = socket();
bind(s, port);
listen(backlog);
while(true) {
int newClient = accept(s);
createTaskToHandleClient(newClient);
}
以上是伪代码……但您将创建一个套接字,用于表示客户端将连接到的 ESP32 端点。然后,您将把它绑定到您想要监听的 ESP32 上的端口号。然后,您将指示 ESP32 在支持最大数量的未接受客户端的情况下侦听该套接字。
现在您将进入一个循环,您将在其中调用“accept()”。这是核心功能。调用时,它会阻止等待传入的客户端连接请求。在 ESP32 中,它会阻止当前任务,但会允许并行任务继续进行。当我们醒来时,是因为我们收到了一个新的客户端请求。现在我们有了设计选择……我们立即处理客户端请求,然后将其关闭……如果客户端处理时间很短,我们可以这样做……或者……我们可以生成一个新的 FreeRTOS 任务并传递它新接收到的表示客户端请求的套接字,并让该任务并行处理它。然后我们返回循环并等待下一个传入的客户端。
所有这些在 TCP/IP 套接字编程中都是正常的。
这是 TCP/IP 套接字编程的常见故事。我认为,如果您总体上研究 TCP/IP 套接字 API,您会发现答案将在 ESP32 环境中完美运行,并且您会对结果感到满意。TCP/IP 套接字是一个丰富而强大的 API,似乎已在 ESP32 中完全实现。如果你得到一本关于 TCP/IP 套接字的书并研究它,你将获得丰厚的回报。我相信您也可以从基于网络的文章中整合您的研究
在较高级别,您将创建一个执行以下操作的 C 应用程序:
代码:
int s = socket();
bind(s, port);
listen(backlog);
while(true) {
int newClient = accept(s);
createTaskToHandleClient(newClient);
}
以上是伪代码……但您将创建一个套接字,用于表示客户端将连接到的 ESP32 端点。然后,您将把它绑定到您想要监听的 ESP32 上的端口号。然后,您将指示 ESP32 在支持最大数量的未接受客户端的情况下侦听该套接字。
现在您将进入一个循环,您将在其中调用“accept()”。这是核心功能。调用时,它会阻止等待传入的客户端连接请求。在 ESP32 中,它会阻止当前任务,但会允许并行任务继续进行。当我们醒来时,是因为我们收到了一个新的客户端请求。现在我们有了设计选择……我们立即处理客户端请求,然后将其关闭……如果客户端处理时间很短,我们可以这样做……或者……我们可以生成一个新的 FreeRTOS 任务并传递它新接收到的表示客户端请求的套接字,并让该任务并行处理它。然后我们返回循环并等待下一个传入的客户端。
所有这些在 TCP/IP 套接字编程中都是正常的。
举报