我在LWIP中使用netconn api,但处于非阻止模式。因此,当我打开一个新的套接字时,将附加一个回调。
当我尝试连接客户端时,我收到一个回调,当我获得该回调时,我调用netconn_accept(),但这会永远阻塞。谁能帮忙,它似乎挂在sys_arch_mbox_fetch
static callback(struct netconn *conn, enum netconn_evt evt, uint16_t length)
{
switch (evt) {
case NETCONN_EVT_RCVPLUS:
if (conn->state == NETCONN_LISTEN)
accept(&conn);
}
struct netconn* accept(struct netconn *conn)
{
struct netconn *nc;
if (netconn_accept(conn, &nc) == ERR_OK)
return nc;
else
return NULL;
}
struct netconn *nc = NULL;
nc = netconn_new_with_callback(NETCONN_TCP, callback);
if(!*nc) {
return;
}
netconn_set_nonblocking(nc,NETCONN_FLAG_NON_BLOCKING);
netconn_set_recvtimeout(nc, 1);
netconn_bind(nc, IP_ADDR_ANY, 100);
netconn_listen(*nc);