LWIP netconn非阻塞接受挂起

时间:2018-11-28 11:54:17

标签: c++ c sockets lwip

我在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);

0 个答案:

没有答案