亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? api_lib.c

?? 基于44b0使用ucos2.8操作系統(tǒng)的全部源碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
  }  return (conn->err = ERR_OK);}err_tnetconn_bind(struct netconn *conn, struct ip_addr *addr,      u16_t port){  struct api_msg *msg;  if (conn == NULL) {    return ERR_VAL;  }  if (conn->type != NETCONN_TCP &&     conn->recvmbox == SYS_MBOX_NULL) {    if ((conn->recvmbox = sys_mbox_new()) == SYS_MBOX_NULL) {      return ERR_MEM;    }  }    if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return (conn->err = ERR_MEM);  }  msg->type = API_MSG_BIND;  msg->msg.conn = conn;  msg->msg.msg.bc.ipaddr = addr;  msg->msg.msg.bc.port = port;  api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  memp_free(MEMP_API_MSG, msg);  return conn->err;}err_tnetconn_connect(struct netconn *conn, struct ip_addr *addr,       u16_t port){  struct api_msg *msg;    if (conn == NULL) {    return ERR_VAL;  }  if (conn->recvmbox == SYS_MBOX_NULL) {    if ((conn->recvmbox = sys_mbox_new()) == SYS_MBOX_NULL) {      return ERR_MEM;    }  }    if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return ERR_MEM;  }  msg->type = API_MSG_CONNECT;  msg->msg.conn = conn;    msg->msg.msg.bc.ipaddr = addr;  msg->msg.msg.bc.port = port;  api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  memp_free(MEMP_API_MSG, msg);  return conn->err;}err_tnetconn_disconnect(struct netconn *conn){  struct api_msg *msg;    if (conn == NULL) {    return ERR_VAL;  }  if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return ERR_MEM;  }  msg->type = API_MSG_DISCONNECT;  msg->msg.conn = conn;    api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  memp_free(MEMP_API_MSG, msg);  return conn->err;}err_tnetconn_listen(struct netconn *conn){  struct api_msg *msg;  if (conn == NULL) {    return ERR_VAL;  }  if (conn->acceptmbox == SYS_MBOX_NULL) {    conn->acceptmbox = sys_mbox_new();    if (conn->acceptmbox == SYS_MBOX_NULL) {      return ERR_MEM;    }  }    if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return (conn->err = ERR_MEM);  }  msg->type = API_MSG_LISTEN;  msg->msg.conn = conn;  api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  memp_free(MEMP_API_MSG, msg);  return conn->err;}struct netconn *netconn_accept(struct netconn *conn){  struct netconn *newconn;    if (conn == NULL) {    return NULL;  }    sys_mbox_fetch(conn->acceptmbox, (void **)&newconn);  /* Register event with callback */  if (conn->callback)      (*conn->callback)(conn, NETCONN_EVT_RCVMINUS, 0);    return newconn;}struct netbuf *netconn_recv(struct netconn *conn){  struct api_msg *msg;  struct netbuf *buf;  struct pbuf *p;  u16_t len;      if (conn == NULL) {    return NULL;  }    if (conn->recvmbox == SYS_MBOX_NULL) {    conn->err = ERR_CONN;    return NULL;  }  if (conn->err != ERR_OK) {    return NULL;  }  if (conn->type == NETCONN_TCP) {    if (conn->pcb.tcp->state == LISTEN) {      conn->err = ERR_CONN;      return NULL;    }    buf = memp_malloc(MEMP_NETBUF);    if (buf == NULL) {      conn->err = ERR_MEM;      return NULL;    }        sys_mbox_fetch(conn->recvmbox, (void **)&p);    if (p != NULL)    {        len = p->tot_len;        conn->recv_avail -= len;    }    else        len = 0;        /* Register event with callback */      if (conn->callback)        (*conn->callback)(conn, NETCONN_EVT_RCVMINUS, len);    /* If we are closed, we indicate that we no longer wish to receive       data by setting conn->recvmbox to SYS_MBOX_NULL. */    if (p == NULL) {      memp_free(MEMP_NETBUF, buf);      sys_mbox_free(conn->recvmbox);      conn->recvmbox = SYS_MBOX_NULL;      return NULL;    }    buf->p = p;    buf->ptr = p;    buf->fromport = 0;    buf->fromaddr = NULL;    /* Let the stack know that we have taken the data. */    if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {      conn->err = ERR_MEM;      return buf;    }    msg->type = API_MSG_RECV;    msg->msg.conn = conn;    if (buf != NULL) {      msg->msg.msg.len = buf->p->tot_len;    } else {      msg->msg.msg.len = 1;    }    api_msg_post(msg);    sys_mbox_fetch(conn->mbox, NULL);    memp_free(MEMP_API_MSG, msg);  } else {    sys_mbox_fetch(conn->recvmbox, (void **)&buf);  conn->recv_avail -= buf->p->tot_len;    /* Register event with callback */    if (conn->callback)        (*conn->callback)(conn, NETCONN_EVT_RCVMINUS, buf->p->tot_len);  }        LWIP_DEBUGF(API_LIB_DEBUG, ("netconn_recv: received %p (err %d)\n", (void *)buf, conn->err));  return buf;}err_tnetconn_send(struct netconn *conn, struct netbuf *buf){  struct api_msg *msg;  if (conn == NULL) {    return ERR_VAL;  }  if (conn->err != ERR_OK) {    return conn->err;  }  if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return (conn->err = ERR_MEM);  }  LWIP_DEBUGF(API_LIB_DEBUG, ("netconn_send: sending %d bytes\n", buf->p->tot_len));  msg->type = API_MSG_SEND;  msg->msg.conn = conn;  msg->msg.msg.p = buf->p;  api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  memp_free(MEMP_API_MSG, msg);  return conn->err;}err_tnetconn_write(struct netconn *conn, void *dataptr, u16_t size, u8_t copy){  struct api_msg *msg;  u16_t len;    if (conn == NULL) {    return ERR_VAL;  }  if (conn->err != ERR_OK) {    return conn->err;  }    if (conn->sem == SYS_SEM_NULL) {    conn->sem = sys_sem_new(0);    if (conn->sem == SYS_SEM_NULL) {      return ERR_MEM;    }  }  if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return (conn->err = ERR_MEM);  }  msg->type = API_MSG_WRITE;  msg->msg.conn = conn;          conn->state = NETCONN_WRITE;  while (conn->err == ERR_OK && size > 0) {    msg->msg.msg.w.dataptr = dataptr;    msg->msg.msg.w.copy = copy;        if (conn->type == NETCONN_TCP) {      if (tcp_sndbuf(conn->pcb.tcp) == 0) {  sys_sem_wait(conn->sem);  if (conn->err != ERR_OK) {    goto ret;  }      }      if (size > tcp_sndbuf(conn->pcb.tcp)) {  /* We cannot send more than one send buffer's worth of data at a     time. */  len = tcp_sndbuf(conn->pcb.tcp);      } else {  len = size;      }    } else {      len = size;    }        LWIP_DEBUGF(API_LIB_DEBUG, ("netconn_write: writing %d bytes (%d)\n", len, copy));    msg->msg.msg.w.len = len;    api_msg_post(msg);    sys_mbox_fetch(conn->mbox, NULL);        if (conn->err == ERR_OK) {      dataptr = (void *)((u8_t *)dataptr + len);      size -= len;    } else if (conn->err == ERR_MEM) {      conn->err = ERR_OK;      sys_sem_wait(conn->sem);    } else {      goto ret;    }  } ret:  memp_free(MEMP_API_MSG, msg);  conn->state = NETCONN_NONE;  if (conn->sem != SYS_SEM_NULL) {    sys_sem_free(conn->sem);    conn->sem = SYS_SEM_NULL;  }    return conn->err;}err_tnetconn_close(struct netconn *conn){  struct api_msg *msg;  if (conn == NULL) {    return ERR_VAL;  }  if ((msg = memp_malloc(MEMP_API_MSG)) == NULL) {    return (conn->err = ERR_MEM);  }  conn->state = NETCONN_CLOSE; again:  msg->type = API_MSG_CLOSE;  msg->msg.conn = conn;  api_msg_post(msg);  sys_mbox_fetch(conn->mbox, NULL);  if (conn->err == ERR_MEM &&     conn->sem != SYS_SEM_NULL) {    sys_sem_wait(conn->sem);    goto again;  }  conn->state = NETCONN_NONE;  memp_free(MEMP_API_MSG, msg);  return conn->err;}err_tnetconn_err(struct netconn *conn){  return conn->err;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久精品人人做人人爽50路| 视频一区二区不卡| 精品国产乱码久久久久久老虎| 欧美丝袜自拍制服另类| 色狠狠一区二区| 成人性视频免费网站| 精品一区二区三区久久久| 亚洲久本草在线中文字幕| 尤物av一区二区| 亚洲综合一二三区| 日韩精品福利网| 免费成人av在线| 久久超碰97中文字幕| 国产精品一线二线三线精华| 国产电影精品久久禁18| 成人av免费观看| 在线精品国精品国产尤物884a| 91久久精品一区二区三| 欧美色综合天天久久综合精品| 欧美美女网站色| 久久综合视频网| 中文字幕中文乱码欧美一区二区 | 欧美视频日韩视频| 日韩一区二区三区在线视频| 久久这里只有精品首页| 日韩毛片在线免费观看| 亚洲电影第三页| 国内不卡的二区三区中文字幕 | 日韩一区在线免费观看| 一区二区三区在线免费视频| 美腿丝袜亚洲色图| 成人爱爱电影网址| 欧美巨大另类极品videosbest | 中文字幕一区视频| 亚洲国产乱码最新视频| 精品亚洲欧美一区| 色综合久久88色综合天天| 51精品秘密在线观看| 国产精品麻豆欧美日韩ww| 天天综合网 天天综合色| 国产高清成人在线| 在线成人av影院| 国产精品网站在线观看| 奇米色777欧美一区二区| 成人综合在线网站| 日韩精品专区在线影院重磅| 亚洲欧美另类综合偷拍| 国产在线精品免费| 91精品国产综合久久婷婷香蕉| 国产精品电影一区二区三区| 麻豆91免费观看| 91久久线看在观草草青青| 久久看人人爽人人| 日本欧洲一区二区| 欧美亚洲国产一区在线观看网站| 国产欧美一区二区精品仙草咪| 五月激情综合婷婷| 在线免费观看日韩欧美| 自拍偷拍亚洲激情| 国产成都精品91一区二区三| 欧美电视剧免费全集观看| 亚洲高清不卡在线观看| 日本高清成人免费播放| 中文字幕不卡的av| 风流少妇一区二区| 久久九九99视频| 国产精品一区在线观看你懂的| 91精品国产免费| 日韩av在线播放中文字幕| 欧美专区日韩专区| 亚洲综合色婷婷| 在线观看一区二区视频| 综合在线观看色| 色域天天综合网| 亚洲最大色网站| 欧美人牲a欧美精品| 亚洲成人综合视频| 欧美日韩精品欧美日韩精品| 亚洲女同女同女同女同女同69| av一区二区三区| 精品对白一区国产伦| 欧美日韩国产高清一区二区三区 | 亚洲综合自拍偷拍| 欧美性感一区二区三区| 国产成人在线观看| 午夜一区二区三区在线观看| 亚洲天堂免费看| 国产精品初高中害羞小美女文| 最新日韩av在线| 亚洲国产日日夜夜| 国产一区二区福利视频| www.在线欧美| 欧美二区乱c少妇| 久久久久国产精品人| 亚洲三级视频在线观看| 精品一区二区在线观看| 99精品在线免费| 欧美成人性战久久| 亚洲人成网站影音先锋播放| 日本美女一区二区三区| 99久久久精品免费观看国产蜜| 在线成人午夜影院| 亚洲人成在线观看一区二区| 精品亚洲成a人在线观看| 不卡的av在线播放| 久久久久久电影| 国内精品久久久久影院色| 欧美天堂一区二区三区| 亚洲精品第一国产综合野| 国内久久精品视频| 精品久久久久久最新网址| 日韩高清不卡在线| 日韩欧美电影一二三| 亚洲国产成人tv| 欧美日韩一区在线观看| 亚洲色图欧美偷拍| 激情综合五月天| 色先锋资源久久综合| 亚洲人成精品久久久久久| 99re热这里只有精品视频| 久久久久9999亚洲精品| 国产精品一区在线| 国产精品久久久久久久久免费桃花 | 国产麻豆精品在线观看| 欧美白人最猛性xxxxx69交| 美女一区二区久久| 国产亚洲精品7777| 91激情在线视频| 激情图区综合网| 综合激情成人伊人| 日韩精品中文字幕在线不卡尤物| 久久91精品久久久久久秒播| 久久久久高清精品| 成人一级视频在线观看| 亚洲综合丝袜美腿| 国产欧美一区二区在线| 在线视频一区二区免费| 国产综合成人久久大片91| 亚洲精品免费看| 欧美成人video| 欧美日韩高清一区二区三区| 国产成人99久久亚洲综合精品| 亚洲国产成人91porn| 伊人色综合久久天天| 久久精品国产精品青草| 中文字幕一区二区视频| 久久视频一区二区| 欧美成人精品福利| 精品少妇一区二区三区免费观看| 欧美在线制服丝袜| 在线视频一区二区三区| 在线亚洲免费视频| 亚洲欧美日韩中文字幕一区二区三区| 欧美日韩小视频| 8v天堂国产在线一区二区| 欧美日韩在线直播| 欧美日韩一卡二卡三卡 | 一区二区欧美视频| 亚洲欧美视频一区| 亚洲夂夂婷婷色拍ww47| 一区二区激情视频| 青青青伊人色综合久久| 麻豆成人在线观看| 夫妻av一区二区| 欧美日韩在线观看一区二区| 欧美一区二区成人| 国产精品久久久久久亚洲伦 | 在线综合视频播放| 久久精品在线免费观看| 中文字幕欧美一区| 肉丝袜脚交视频一区二区| 久久国产精品72免费观看| 成人爽a毛片一区二区免费| 欧美色图激情小说| 欧美国产日本韩| 亚洲电影一级黄| 成人精品一区二区三区四区 | 国产一区二区久久| 欧美区一区二区三区| 国产精品污www在线观看| 日韩在线播放一区二区| 欧美视频中文字幕| 综合久久国产九一剧情麻豆| 亚洲成人动漫在线观看| 91丨porny丨首页| 国产精品毛片a∨一区二区三区| 亚洲成a人v欧美综合天堂下载 | 色婷婷狠狠综合| 国产色综合一区| 国产成人综合在线播放| 欧美不卡一区二区三区四区| 午夜精品福利一区二区蜜股av| 日本久久一区二区三区| 亚洲精品一二三| 欧美在线观看视频一区二区| 亚洲综合小说图片| 欧美日本视频在线| 国内精品国产三级国产a久久| 久久色在线视频| 色综合久久88色综合天天免费|