lwip的非阻塞接收
时间: 2024-06-13 09:10:00 浏览: 190
lwip是一个轻量级的TCP/IP协议栈,支持非阻塞接收。下面是lwip非阻塞接收的演示代码:
```c
struct netconn *conn;
err_t err;
struct netbuf *buf;
void *data;
u16_t len;
// 创建TCP连接
conn = netconn_new(NETCONN_TCP);
netconn_bind(conn, NULL, 80);
netconn_listen(conn);
// 非阻塞接收数据
netconn_set_nonblocking(conn, 1);
err = netconn_accept(conn, &newconn);
if (err == ERR_OK) {
do {
err = netconn_recv(newconn, &buf);
if (err == ERR_OK) {
netbuf_data(buf, &data, &len);
// 处理接收到的数据
netbuf_delete(buf);
}
} while (err == ERR_OK);
netconn_close(newconn);
netconn_delete(newconn);
}
```
在上面的代码中,我们首先创建了一个TCP连接,并将其绑定到80端口。然后我们将连接设置为非阻塞模式,并使用netconn_accept()函数接收新的连接。一旦我们接收到一个新的连接,我们就可以使用netconn_recv()函数非阻塞地接收数据。如果接收到数据,我们可以使用netbuf_data()函数获取数据指针和数据长度,并对数据进行处理。最后,我们关闭连接并删除连接对象。
阅读全文