Я использую netconn api в LWIP, но в неблокирующем режиме. Поэтому, когда я открываю новый сокет, я присоединяю к нему обратный вызов.
Я получаю обратный вызов, когда я пытаюсь подключиться к клиенту, и когда я получаю обратный вызов, я вызываю 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);
Задача ещё не решена.
Других решений пока нет …