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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? tcp.c

?? MCS-51的一個(gè)Free小型操作系統(tǒng),在KeilC中下編譯工作
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
  }  for(pcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs; pcb != NULL; pcb = pcb->next) {    if (pcb->local_port == port) {      goto again;    }  }  return port;}/** * Connects to another host. The function given as the "connected" * argument will be called when the connection has been established. * */err_ttcp_connect(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port,      err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err)){  u32_t optdata;  err_t ret;  u32_t iss;  LWIP_DEBUGF(TCP_DEBUG, ("tcp_connect to port %"U16_F"\n", port));  if (ipaddr != NULL) {    pcb->remote_ip = *ipaddr;  } else {    return ERR_VAL;  }  pcb->remote_port = port;  if (pcb->local_port == 0) {    pcb->local_port = tcp_new_port();  }  iss = tcp_next_iss();  pcb->rcv_nxt = 0;  pcb->snd_nxt = iss;  pcb->lastack = iss - 1;  pcb->snd_lbb = iss - 1;  pcb->rcv_wnd = TCP_WND;  pcb->snd_wnd = TCP_WND;  pcb->mss = TCP_MSS;  pcb->cwnd = 1;  pcb->ssthresh = pcb->mss * 10;  pcb->state = SYN_SENT;#if LWIP_CALLBACK_API    pcb->connected = connected;#endif /* LWIP_CALLBACK_API */    TCP_REG(&tcp_active_pcbs, pcb);    /* Build an MSS option */  optdata = htonl(((u32_t)2 << 24) |       ((u32_t)4 << 16) |       (((u32_t)pcb->mss / 256) << 8) |      (pcb->mss & 255));  ret = tcp_enqueue(pcb, NULL, 0, TCP_SYN, 0, (u8_t *)&optdata, 4);  if (ret == ERR_OK) {     tcp_output(pcb);  }  return ret;} /** * Called every 500 ms and implements the retransmission timer and the timer that * removes PCBs that have been in TIME-WAIT for enough time. It also increments * various timers such as the inactivity timer in each PCB. */voidtcp_slowtmr(void){  struct tcp_pcb *pcb, *pcb2, *prev;  u32_t eff_wnd;  u8_t pcb_remove;      /* flag if a PCB should be removed */  err_t err;  err = ERR_OK;  ++tcp_ticks;  /* Steps through all of the active PCBs. */  prev = NULL;  pcb = tcp_active_pcbs;  if (pcb == NULL) {    LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: no active pcbs\n"));  }  while (pcb != NULL) {    LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: processing active pcb\n"));    LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED);    LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN);    LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT);    pcb_remove = 0;    if (pcb->state == SYN_SENT && pcb->nrtx == TCP_SYNMAXRTX) {      ++pcb_remove;      LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max SYN retries reached\n"));    }    else if (pcb->nrtx == TCP_MAXRTX) {      ++pcb_remove;      LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n"));    } else {      ++pcb->rtime;      if (pcb->unacked != NULL && pcb->rtime >= pcb->rto) {        /* Time for a retransmission. */        LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_slowtmr: rtime %"U16_F" pcb->rto %"U16_F"\n",          pcb->rtime, pcb->rto));        /* Double retransmission time-out unless we are trying to         * connect to somebody (i.e., we are in SYN_SENT). */        if (pcb->state != SYN_SENT) {          pcb->rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[pcb->nrtx];        }        /* Reduce congestion window and ssthresh. */        eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd);        pcb->ssthresh = eff_wnd >> 1;        if (pcb->ssthresh < pcb->mss) {          pcb->ssthresh = pcb->mss * 2;        }        pcb->cwnd = pcb->mss;        LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: cwnd %"U16_F" ssthresh %"U16_F"\n",                                pcb->cwnd, pcb->ssthresh));         /* The following needs to be called AFTER cwnd is set to one mss - STJ */        tcp_rexmit_rto(pcb);     }    }    /* Check if this PCB has stayed too long in FIN-WAIT-2 */    if (pcb->state == FIN_WAIT_2) {      if ((u32_t)(tcp_ticks - pcb->tmr) >        TCP_FIN_WAIT_TIMEOUT / TCP_SLOW_INTERVAL) {        ++pcb_remove;        LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in FIN-WAIT-2\n"));      }    }   /* Check if KEEPALIVE should be sent */   if((pcb->so_options & SOF_KEEPALIVE) && ((pcb->state == ESTABLISHED) || (pcb->state == CLOSE_WAIT))) {      if((u32_t)(tcp_ticks - pcb->tmr) > (pcb->keepalive + TCP_MAXIDLE) / TCP_SLOW_INTERVAL)  {         LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: KEEPALIVE timeout. Aborting connection to %"U16_F".%"U16_F".%"U16_F".%"U16_F".\n",                                 ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip),                                 ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip)));         tcp_abort(pcb);      }      else if((u32_t)(tcp_ticks - pcb->tmr) > (pcb->keepalive + pcb->keep_cnt * TCP_KEEPINTVL) / TCP_SLOW_INTERVAL) {         tcp_keepalive(pcb);         pcb->keep_cnt++;      }   }    /* If this PCB has queued out of sequence data, but has been       inactive for too long, will drop the data (it will eventually       be retransmitted). */#if TCP_QUEUE_OOSEQ        if (pcb->ooseq != NULL &&       (u32_t)tcp_ticks - pcb->tmr >=       pcb->rto * TCP_OOSEQ_TIMEOUT) {      tcp_segs_free(pcb->ooseq);      pcb->ooseq = NULL;      LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: dropping OOSEQ queued data\n"));    }#endif /* TCP_QUEUE_OOSEQ */    /* Check if this PCB has stayed too long in SYN-RCVD */    if (pcb->state == SYN_RCVD) {      if ((u32_t)(tcp_ticks - pcb->tmr) >        TCP_SYN_RCVD_TIMEOUT / TCP_SLOW_INTERVAL) {        ++pcb_remove;        LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in SYN-RCVD\n"));      }    }    /* Check if this PCB has stayed too long in LAST-ACK */    if (pcb->state == LAST_ACK) {      if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) {        ++pcb_remove;        LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in LAST-ACK\n"));      }    }    /* If the PCB should be removed, do it. */    if (pcb_remove) {      tcp_pcb_purge(pcb);            /* Remove PCB from tcp_active_pcbs list. */      if (prev != NULL) {  LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_active_pcbs", pcb != tcp_active_pcbs);        prev->next = pcb->next;      } else {        /* This PCB was the first. */        LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_active_pcbs", tcp_active_pcbs == pcb);        tcp_active_pcbs = pcb->next;      }      TCP_EVENT_ERR(pcb->errf, pcb->callback_arg, ERR_ABRT);      pcb2 = pcb->next;      memp_free(MEMP_TCP_PCB, pcb);      pcb = pcb2;    } else {      /* We check if we should poll the connection. */      ++pcb->polltmr;      if (pcb->polltmr >= pcb->pollinterval) {        pcb->polltmr = 0;        LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: polling application\n"));        TCP_EVENT_POLL(pcb, err);        if (err == ERR_OK) {          tcp_output(pcb);        }      }            prev = pcb;      pcb = pcb->next;    }  }    /* Steps through all of the TIME-WAIT PCBs. */  prev = NULL;      pcb = tcp_tw_pcbs;  while (pcb != NULL) {    LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);    pcb_remove = 0;    /* Check if this PCB has stayed long enough in TIME-WAIT */    if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) {      ++pcb_remove;    }        /* If the PCB should be removed, do it. */    if (pcb_remove) {      tcp_pcb_purge(pcb);            /* Remove PCB from tcp_tw_pcbs list. */      if (prev != NULL) {  LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs);        prev->next = pcb->next;      } else {        /* This PCB was the first. */        LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb);        tcp_tw_pcbs = pcb->next;      }      pcb2 = pcb->next;      memp_free(MEMP_TCP_PCB, pcb);      pcb = pcb2;    } else {      prev = pcb;      pcb = pcb->next;    }  }}/** * Is called every TCP_FAST_INTERVAL (250 ms) and sends delayed ACKs. */voidtcp_fasttmr(void){  struct tcp_pcb *pcb;  /* send delayed ACKs */    for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {    if (pcb->flags & TF_ACK_DELAY) {      LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n"));      tcp_ack_now(pcb);      pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW);    }  }}/** * Deallocates a list of TCP segments (tcp_seg structures). * */u8_ttcp_segs_free(struct tcp_seg *seg){  u8_t count = 0;  struct tcp_seg *next;  while (seg != NULL) {    next = seg->next;    count += tcp_seg_free(seg);    seg = next;  }  return count;}/** * Frees a TCP segment. * */u8_ttcp_seg_free(struct tcp_seg *seg){  u8_t count = 0;    if (seg != NULL) {    if (seg->p != NULL) {      count = pbuf_free(seg->p);#if TCP_DEBUG      seg->p = NULL;#endif /* TCP_DEBUG */    }    memp_free(MEMP_TCP_SEG, seg);  }  return count;}/** * Sets the priority of a connection. * */voidtcp_setprio(struct tcp_pcb *pcb, u8_t prio){  pcb->prio = prio;}#if TCP_QUEUE_OOSEQ/** * Returns a copy of the given TCP segment. * */ struct tcp_seg *tcp_seg_copy(struct tcp_seg *seg){  struct tcp_seg *cseg;  cseg = memp_malloc(MEMP_TCP_SEG);  if (cseg == NULL) {    return NULL;  }  memcpy((u8_t *)cseg, (const u8_t *)seg, sizeof(struct tcp_seg));   pbuf_ref(cseg->p);  return cseg;}#endif#if LWIP_CALLBACK_APIstatic err_ttcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err){  arg = arg;  if (p != NULL) {    pbuf_free(p);  } else if (err == ERR_OK) {    return tcp_close(pcb);  }  return ERR_OK;}#endif /* LWIP_CALLBACK_API */static voidtcp_kill_prio(u8_t prio){  struct tcp_pcb *pcb, *inactive;  u32_t inactivity;  u8_t mprio;  mprio = TCP_PRIO_MAX;    /* We kill the oldest active connection that has lower priority than     prio. */  inactivity = 0;  inactive = NULL;  for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {    if (pcb->prio <= prio &&       pcb->prio <= mprio &&       (u32_t)(tcp_ticks - pcb->tmr) >= inactivity) {      inactivity = tcp_ticks - pcb->tmr;      inactive = pcb;      mprio = pcb->prio;    }  }  if (inactive != NULL) {    LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_prio: killing oldest PCB %p (%"S32_F")\n",           (void *)inactive, inactivity));    tcp_abort(inactive);  }      }static voidtcp_kill_timewait(void){  struct tcp_pcb *pcb, *inactive;  u32_t inactivity;  inactivity = 0;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久一牛影视| 欧美无砖砖区免费| 欧美日韩在线直播| 国产亚洲1区2区3区| 天使萌一区二区三区免费观看| 国产成人精品一区二| 欧美一区二区三区婷婷月色| 亚洲久草在线视频| 成人午夜伦理影院| 欧美zozozo| 日本欧美韩国一区三区| 91国产成人在线| 一区精品在线播放| 国产成人超碰人人澡人人澡| 日韩一区二区三区免费观看| 亚洲成人1区2区| 91电影在线观看| 亚洲欧美国产三级| 99久久精品国产一区二区三区| 精品国产一区二区三区久久久蜜月 | 波多野结衣精品在线| 日韩视频一区二区在线观看| 天天色综合天天| 欧美日韩一区不卡| 亚洲私人黄色宅男| www.亚洲精品| 亚洲乱码国产乱码精品精小说| 久久精工是国产品牌吗| 日韩视频不卡中文| 老司机午夜精品| 精品少妇一区二区三区日产乱码| 日韩高清在线电影| 91麻豆精品国产91久久久更新时间| 亚洲3atv精品一区二区三区| 欧美精品高清视频| 肉肉av福利一精品导航| 欧美一区二区三区的| 经典三级在线一区| 久久蜜桃香蕉精品一区二区三区| 国产成人在线色| 最新成人av在线| 欧美日韩在线观看一区二区| 亚洲成a人在线观看| 欧美一区二区福利视频| 国产一区欧美二区| 国产精品久久久久aaaa| 91年精品国产| 爽爽淫人综合网网站| 26uuu亚洲综合色欧美| 成人在线综合网| 一区二区三区高清在线| 4438亚洲最大| 国产一区二区在线观看视频| 国产精品理论片在线观看| 在线观看日产精品| 理论片日本一区| 亚洲日本电影在线| 69久久99精品久久久久婷婷| 国产一区二区三区| 亚洲另类在线视频| 91麻豆精品国产91久久久使用方法| 国产一二三精品| 亚洲黄一区二区三区| 777色狠狠一区二区三区| 国产成人综合视频| 亚洲成人综合在线| 久久精品视频在线免费观看 | 一区二区中文字幕在线| 欧美高清精品3d| 成人一级黄色片| 蜜臀av一区二区在线观看 | 成人h版在线观看| 男人的j进女人的j一区| 国产精品久久久久久久第一福利 | 日本一区二区免费在线观看视频 | av亚洲产国偷v产偷v自拍| 亚洲成人激情综合网| 国产女人aaa级久久久级| 7777精品伊人久久久大香线蕉| 成人av电影免费观看| 六月婷婷色综合| 亚洲一区在线看| 一区在线观看视频| 久久天堂av综合合色蜜桃网| 欧美视频一区二区三区四区 | 中文字幕一区免费在线观看| 精品久久国产97色综合| 欧美伊人久久大香线蕉综合69 | 欧美一区二区三区电影| 色婷婷国产精品| 成人午夜视频网站| 国产最新精品免费| 日韩不卡在线观看日韩不卡视频| ㊣最新国产の精品bt伙计久久| 精品国产一区二区精华| 欧美精品视频www在线观看| 色偷偷久久人人79超碰人人澡| 国产成人啪免费观看软件| 激情综合网激情| 毛片av一区二区| 蜜臀av亚洲一区中文字幕| 午夜欧美电影在线观看| 亚洲最大成人网4388xx| 亚洲精品成人悠悠色影视| 亚洲国产精华液网站w| 久久久不卡影院| 国产亚洲精久久久久久| 久久综合狠狠综合久久综合88| 欧美一区二区三区在线观看| 欧美亚洲丝袜传媒另类| 日本高清免费不卡视频| 色婷婷综合视频在线观看| av中文字幕一区| 91麻豆免费观看| 91麻豆福利精品推荐| 91丨九色丨蝌蚪丨老版| 91日韩精品一区| 91国产免费观看| 欧美日韩一级二级| 7777精品久久久大香线蕉| 日韩亚洲欧美一区二区三区| 日韩欧美三级在线| 精品国产sm最大网站| 国产欧美日韩不卡免费| 国产精品美女久久久久久久久| 国产精品丝袜一区| 亚洲少妇最新在线视频| 亚洲一区二区欧美日韩| 日韩电影在线观看网站| 久久99国内精品| 国产精品乡下勾搭老头1| 99国产精品久久| 欧美精品久久久久久久多人混战| 欧美一区二区久久| 国产欧美一区二区三区在线看蜜臀 | 青草国产精品久久久久久| 蜜桃视频第一区免费观看| 天天综合色天天综合色h| 久久91精品久久久久久秒播| 国产成人综合网站| 欧美在线免费观看视频| 日韩美女在线视频| 国产欧美一区二区三区网站| 亚洲乱码国产乱码精品精小说 | 日韩精品综合一本久道在线视频| 精品少妇一区二区三区免费观看| 中文字幕欧美激情一区| 亚洲bt欧美bt精品| 国产一区二区三区在线观看免费视频 | 亚洲婷婷综合久久一本伊一区| 亚洲欧美日韩国产成人精品影院| 亚洲1区2区3区视频| 国产精品综合一区二区| 欧美三级三级三级| 国产日本亚洲高清| 日韩福利电影在线| 99久久精品国产毛片| 91精品国产欧美一区二区18 | 日韩精品一区二区三区视频在线观看 | 日韩亚洲国产中文字幕欧美| 久久午夜羞羞影院免费观看| 成人免费一区二区三区在线观看| 亚洲国产日韩在线一区模特| 国产一区啦啦啦在线观看| 欧美系列一区二区| 久久理论电影网| 日韩精品午夜视频| 99精品视频一区二区三区| 日韩一区二区影院| 亚洲小说欧美激情另类| 成人av免费在线观看| 精品日韩欧美一区二区| 午夜一区二区三区在线观看| 成人午夜大片免费观看| 精品国产制服丝袜高跟| 日韩黄色在线观看| 色香蕉久久蜜桃| 日本一区二区成人在线| 国产一区二区成人久久免费影院 | 午夜精品久久久久久久| 91首页免费视频| 国产精品麻豆网站| 国产精选一区二区三区| 日韩精品一区二区三区老鸭窝| 亚洲成人黄色影院| 欧美性xxxxxx少妇| 一区二区三区在线视频免费| 99久久国产综合精品女不卡| 日本一区二区三区免费乱视频| 狂野欧美性猛交blacked| 欧美麻豆精品久久久久久| 亚洲男人的天堂在线aⅴ视频| 成人美女视频在线观看18| 久久久久国产精品麻豆| 国内精品自线一区二区三区视频| 欧美一区二区三区四区高清| 日本视频一区二区| 日韩欧美国产不卡| 国产美女视频一区| 国产午夜精品一区二区三区视频|