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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tcpip.c

?? NXP產品LPC23XX的開發板的原文件,包含了源代碼,使用手冊,開發板線路圖
?? C
?? 第 1 頁 / 共 3 頁
字號:
              }      break;    }    case FRAME_IP :                                        // check for IP-type    {      if ((ReadFrameBE_EMAC() & 0xFF00 ) == IP_VER_IHL)     // IPv4, IHL=5 (20 Bytes Header)      {                                                    // ignore Type Of Service        RecdIPFrameLength = ReadFrameBE_EMAC();             // get IP frame's length        ReadFrameBE_EMAC();                                 // ignore identification        if (!(ReadFrameBE_EMAC() & (IP_FLAG_MOREFRAG | IP_FRAGOFS_MASK)))  // only unfragm. frames        {          ProtocolType = ReadFrameBE_EMAC() & 0xFF;         // get protocol, ignore TTL          ReadFrameBE_EMAC();                               // ignore checksum          CopyFromFrame_EMAC(&RecdFrameIP, 4);              // get source IP          CopyFromFrame_EMAC(&TargetIP, 4);                 // get destination IP          if (!memcmp(&MyIP, &TargetIP, 4))                // is it for us?            switch (ProtocolType) {              case PROT_ICMP : { ProcessICMPFrame(); break; }              case PROT_TCP  : { ProcessTCPFrame(); break; }              case PROT_UDP  : break;                      // not implemented!            }        }            }      break;    }  }}// easyWEB internal function// we've just rec'd an ICMP-frame (Internet Control Message Protocol)// check what to do and branch to the appropriate sub-functionvoid ProcessICMPFrame(void){  unsigned short ICMPTypeAndCode;  ICMPTypeAndCode = ReadFrameBE_EMAC();           // get Message Type and Code  ReadFrameBE_EMAC();                             // ignore ICMP checksum  switch (ICMPTypeAndCode >> 8) {                // check type    case ICMP_ECHO :                             // is echo request?    {      PrepareICMP_ECHO_REPLY();                  // echo as much as we can...      break;    }  }}// easyWEB internal function// we've just rec'd an TCP-frame (Transmission Control Protocol)// this function mainly implements the TCP state machine according to RFC793void ProcessTCPFrame(void){  unsigned short TCPSegSourcePort;               // segment's source port  unsigned short TCPSegDestPort;                 // segment's destination port  unsigned long TCPSegSeq;                       // segment's sequence number  unsigned long TCPSegAck;                       // segment's acknowledge number  unsigned short TCPCode;                        // TCP code and header length  unsigned char TCPHeaderSize;                   // real TCP header length  unsigned short NrOfDataBytes;                  // real number of data      TCPSegSourcePort = ReadFrameBE_EMAC();                    // get ports  TCPSegDestPort = ReadFrameBE_EMAC();  if (TCPSegDestPort != TCPLocalPort) return;              // drop segment if port doesn't match  TCPSegSeq = (unsigned long)ReadFrameBE_EMAC() << 16;      // get segment sequence nr.  TCPSegSeq |= ReadFrameBE_EMAC();  TCPSegAck = (unsigned long)ReadFrameBE_EMAC() << 16;      // get segment acknowledge nr.  TCPSegAck |= ReadFrameBE_EMAC();  TCPCode = ReadFrameBE_EMAC();                             // get control bits, header length...  TCPHeaderSize = (TCPCode & DATA_OFS_MASK) >> 10;         // header length in bytes  NrOfDataBytes = RecdIPFrameLength - IP_HEADER_SIZE - TCPHeaderSize;     // seg. text length  if (NrOfDataBytes > MAX_TCP_RX_DATA_SIZE) return;        // packet too large for us :...-(  if (TCPHeaderSize > TCP_HEADER_SIZE)                     // ignore options if any    DummyReadFrame_EMAC(TCPHeaderSize - TCP_HEADER_SIZE);  switch (TCPStateMachine)                                 // implement the TCP state machine  {    case CLOSED :    {      if (!(TCPCode & TCP_CODE_RST))      {        TCPRemotePort = TCPSegSourcePort;        memcpy(&RemoteMAC, &RecdFrameMAC, 6);              // save opponents MAC and IP        memcpy(&RemoteIP, &RecdFrameIP, 4);                // for later use        if (TCPCode & TCP_CODE_ACK)                        // make the reset sequence        {                                                  // acceptable to the other          TCPSeqNr = TCPSegAck;                            // TCP          PrepareTCP_FRAME(TCP_CODE_RST);        }        else        {          TCPSeqNr = 0;          TCPAckNr = TCPSegSeq + NrOfDataBytes;          if (TCPCode & (TCP_CODE_SYN | TCP_CODE_FIN)) TCPAckNr++;          PrepareTCP_FRAME(TCP_CODE_RST | TCP_CODE_ACK);        }      }      break;    }      case LISTENING :    {      if (!(TCPCode & TCP_CODE_RST))                       // ignore segment containing RST      {        TCPRemotePort = TCPSegSourcePort;        memcpy(&RemoteMAC, &RecdFrameMAC, 6);              // save opponents MAC and IP        memcpy(&RemoteIP, &RecdFrameIP, 4);                // for later use        if (TCPCode & TCP_CODE_ACK)                        // reset a bad        {                                                  // acknowledgement          TCPSeqNr = TCPSegAck;          PrepareTCP_FRAME(TCP_CODE_RST);        }        else if (TCPCode & TCP_CODE_SYN)        {          TCPAckNr = TCPSegSeq + 1;                           // get remote ISN, next byte we expect            TCPSeqNr = ((unsigned long)ISNGenHigh << 16) | (T0TC & 0xFFFF);  // Keil: changed from TAR to T0TC; 
                                                              // set local ISN          TCPUNASeqNr = TCPSeqNr + 1;                         // one byte out -> increase by one          PrepareTCP_FRAME(TCP_CODE_SYN | TCP_CODE_ACK);          LastFrameSent = TCP_SYN_ACK_FRAME;          TCPStartRetryTimer();          TCPStateMachine = SYN_RECD;        }      }      break;    }    case SYN_SENT :    {      if (memcmp(&RemoteIP, &RecdFrameIP, 4)) break;  // drop segment if its IP doesn't belong                                                      // to current session      if (TCPSegSourcePort != TCPRemotePort) break;   // drop segment if port doesn't match            if (TCPCode & TCP_CODE_ACK)                // ACK field significant?        if (TCPSegAck != TCPUNASeqNr)            // is our ISN ACKed?        {          if (!(TCPCode & TCP_CODE_RST))          {            TCPSeqNr = TCPSegAck;            PrepareTCP_FRAME(TCP_CODE_RST);          }          break;                                 // drop segment        }      if (TCPCode & TCP_CODE_RST)                // RST??      {        if (TCPCode & TCP_CODE_ACK)              // if ACK was acceptable, reset        {                                        // connection          TCPStateMachine = CLOSED;          TCPFlags = 0;                          // reset all flags, stop retransmission...          SocketStatus = SOCK_ERR_CONN_RESET;        }        break;                                   // drop segment      }              if (TCPCode & TCP_CODE_SYN)                // SYN??      {        TCPAckNr = TCPSegSeq;                    // get opponents ISN        TCPAckNr++;                              // inc. by one...        if (TCPCode & TCP_CODE_ACK)        {          TCPStopTimer();                        // stop retransmission, other TCP got our SYN          TCPSeqNr = TCPUNASeqNr;                // advance our sequence number          PrepareTCP_FRAME(TCP_CODE_ACK);        // ACK this ISN          TCPStateMachine = ESTABLISHED;          SocketStatus |= SOCK_CONNECTED;          SocketStatus |= SOCK_TX_BUF_RELEASED;  // user may send data now :-)        }        else        {          TCPStopTimer();          PrepareTCP_FRAME(TCP_CODE_SYN | TCP_CODE_ACK);   // our SYN isn't ACKed yet,          LastFrameSent = TCP_SYN_ACK_FRAME;               // now continue with sending          TCPStartRetryTimer();                            // SYN_ACK frames          TCPStateMachine = SYN_RECD;        }      }      break;    }    default :    {      if (memcmp(&RemoteIP, &RecdFrameIP, 4)) break;  // drop segment if IP doesn't belong                                                      // to current session      if (TCPSegSourcePort != TCPRemotePort) break;   // drop segment if port doesn't match      if (TCPSegSeq != TCPAckNr) break;               // drop if it's not the segment we expect                  if (TCPCode & TCP_CODE_RST)                // RST??      {        TCPStateMachine = CLOSED;                // close the state machine        TCPFlags = 0;                            // reset all flags, stop retransmission...        SocketStatus = SOCK_ERR_CONN_RESET;      // indicate an error to user        break;      }      if (TCPCode & TCP_CODE_SYN)                // SYN??      {        PrepareTCP_FRAME(TCP_CODE_RST);          // is NOT allowed here! send a reset,        TCPStateMachine = CLOSED;                // close connection...        TCPFlags = 0;                            // reset all flags, stop retransmission...        SocketStatus = SOCK_ERR_REMOTE;          // fatal error!        break;                                   // ...and drop the frame      }      if (!(TCPCode & TCP_CODE_ACK)) break;      // drop segment if the ACK bit is off      if (TCPSegAck == TCPUNASeqNr)              // is our last data sent ACKed?      {        TCPStopTimer();                          // stop retransmission        TCPSeqNr = TCPUNASeqNr;                  // advance our sequence number        switch (TCPStateMachine)                 // change state if necessary        {          case SYN_RECD :                        // ACK of our SYN?          {            TCPStateMachine = ESTABLISHED;       // user may send data now :-)            SocketStatus |= SOCK_CONNECTED;            break;          }          case FIN_WAIT_1 : { TCPStateMachine = FIN_WAIT_2; break; } // ACK of our FIN?          case CLOSING :    { TCPStateMachine = TIME_WAIT; break; }  // ACK of our FIN?          case LAST_ACK :                                            // ACK of our FIN?          {            TCPStateMachine = CLOSED;            TCPFlags = 0;                        // reset all flags, stop retransmission...            SocketStatus &= SOCK_DATA_AVAILABLE; // clear all flags but data available            break;          }          case TIME_WAIT :          {            PrepareTCP_FRAME(TCP_CODE_ACK);      // ACK a retransmission of remote FIN            TCPRestartTimer();                   // restart TIME_WAIT timeout            break;          }        }                if (TCPStateMachine == ESTABLISHED)      // if true, give the frame buffer back          SocketStatus |= SOCK_TX_BUF_RELEASED;  // to user      }      if ((TCPStateMachine == ESTABLISHED) || (TCPStateMachine == FIN_WAIT_1) || (TCPStateMachine == FIN_WAIT_2))        if (NrOfDataBytes)                                 // data available?          if (!(SocketStatus & SOCK_DATA_AVAILABLE))       // rx data-buffer empty?          {            DummyReadFrame_EMAC(6);                        // ignore window, checksum, urgent pointer            CopyFromFrame_EMAC(RxTCPBuffer, NrOfDataBytes);// fetch data and            TCPRxDataCount = NrOfDataBytes;                // ...tell the user...            SocketStatus |= SOCK_DATA_AVAILABLE;           // indicate the new data to user            TCPAckNr += NrOfDataBytes;            PrepareTCP_FRAME(TCP_CODE_ACK);                // ACK rec'd data          }                    if (TCPCode & TCP_CODE_FIN)                // FIN??      {        switch (TCPStateMachine)        {          case SYN_RECD :          case ESTABLISHED :          {            TCPStateMachine = CLOSE_WAIT;            break;          }          case FIN_WAIT_1 :          {                                      // if our FIN was ACKed, we automatically            TCPStateMachine = CLOSING;           // enter FIN_WAIT_2 (look above) and therefore            SocketStatus &= ~SOCK_CONNECTED;     // TIME_WAIT            break;          }          case FIN_WAIT_2 :          {            TCPStartTimeWaitTimer();            TCPStateMachine = TIME_WAIT;            SocketStatus &= ~SOCK_CONNECTED;                        break;          }          case TIME_WAIT :          {            TCPRestartTimer();            break;          }        }        TCPAckNr++;                              // ACK remote's FIN flag        PrepareTCP_FRAME(TCP_CODE_ACK);      }    }  }}// easyWEB internal function// prepares the TxFrame2-buffer to send an ARP-requestvoid PrepareARP_REQUEST(void){  // Ethernet  memset(&TxFrame2[ETH_DA_OFS], (char)0xFF, 6);                  // we don't know opposites MAC!  memcpy(&TxFrame2[ETH_SA_OFS], &MyMAC, 6);  *(unsigned short *)&TxFrame2[ETH_TYPE_OFS] = SWAPB(FRAME_ARP);  // ARP  *(unsigned short *)&TxFrame2[ARP_HARDW_OFS] = SWAPB(HARDW_ETH10);  *(unsigned short *)&TxFrame2[ARP_PROT_OFS] = SWAPB(FRAME_IP);  *(unsigned short *)&TxFrame2[ARP_HLEN_PLEN_OFS] = SWAPB(IP_HLEN_PLEN);  *(unsigned short *)&TxFrame2[ARP_OPCODE_OFS] = SWAPB(OP_ARP_REQUEST);  memcpy(&TxFrame2[ARP_SENDER_HA_OFS], &MyMAC, 6);  memcpy(&TxFrame2[ARP_SENDER_IP_OFS], &MyIP, 4);  memset(&TxFrame2[ARP_TARGET_HA_OFS], 0x00, 6);           // we don't know opposites MAC!  if (((RemoteIP[0] ^ MyIP[0]) & SubnetMask[0]) || ((RemoteIP[1] ^ MyIP[1]) & SubnetMask[1]))    memcpy(&TxFrame2[ARP_TARGET_IP_OFS], &GatewayIP, 4);   // IP not in subnet, use gateway

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
秋霞成人午夜伦在线观看| 欧美色窝79yyyycom| 亚洲自拍偷拍麻豆| 椎名由奈av一区二区三区| 久久精品999| 韩国女主播一区| 国模套图日韩精品一区二区| 日本aⅴ免费视频一区二区三区| 久久久精品欧美丰满| 久久久精品欧美丰满| 国产欧美1区2区3区| 中文在线免费一区三区高中清不卡| 国产午夜精品久久| 国产精品国产三级国产aⅴ原创 | 国产精品美女一区二区在线观看| 精品国产91洋老外米糕| 国产亚洲精品bt天堂精选| 日韩你懂的在线播放| 欧美大肚乱孕交hd孕妇| 欧美成人福利视频| 日韩一级在线观看| 国产欧美一区二区三区沐欲| 国产日韩精品一区二区三区在线| 国产精品拍天天在线| 欧美三级资源在线| 麻豆国产欧美一区二区三区| 欧美激情一二三区| 成人精品小蝌蚪| 日韩精品一区二区三区视频播放 | 午夜伦理一区二区| 欧美在线三级电影| 亚洲777理论| 色琪琪一区二区三区亚洲区| 国产日韩欧美不卡在线| 一区二区三区四区在线| 91精品国产黑色紧身裤美女| 一区二区三区四区视频精品免费| 国产一区二区三区| 日韩毛片高清在线播放| 欧美视频一区二| 精品国产一区二区三区av性色 | 国产精品久久久久久久久搜平片| 色香蕉成人二区免费| 亚洲五月六月丁香激情| 在线视频一区二区三区| 亚洲色图欧美偷拍| 欧美日韩黄色一区二区| 国产精品乱码人人做人人爱| 国产91丝袜在线观看| 亚洲一区二区不卡免费| 日本高清无吗v一区| 一区二区三区在线视频免费| 欧美日韩高清影院| 不卡一区二区三区四区| 日韩一区二区视频| 欧美一级日韩免费不卡| k8久久久一区二区三区| 日本系列欧美系列| 亚洲男人电影天堂| 精品国产露脸精彩对白| 91麻豆免费观看| 国产在线视频精品一区| 日本特黄久久久高潮| 亚洲大片一区二区三区| 亚洲午夜久久久久久久久久久| 久久久久久久精| 中文字幕一区在线观看| 中文字幕日韩一区| 五月综合激情日本mⅴ| 人人狠狠综合久久亚洲| 18成人在线观看| 色综合一个色综合亚洲| 视频一区二区三区中文字幕| 亚洲精品视频免费观看| 亚洲精品国产一区二区精华液| 国产精品国产三级国产普通话三级| 国产日韩欧美制服另类| 久久精品视频免费观看| 久久日韩粉嫩一区二区三区| 国产精品区一区二区三| 1区2区3区精品视频| 国产欧美日韩在线| 国产免费久久精品| 一区二区三区影院| 国产一区 二区| 欧美人成免费网站| 国产日韩欧美在线一区| 国产精品嫩草影院com| 亚洲成av人**亚洲成av**| 国产一区二区在线电影| 国产一区日韩二区欧美三区| 99re这里只有精品6| 国产亚洲一区二区三区| 偷拍自拍另类欧美| 欧美性视频一区二区三区| 国产午夜精品理论片a级大结局| 亚洲福中文字幕伊人影院| 国产高清不卡一区| 亚洲精品一区二区三区影院| 污片在线观看一区二区| 欧美在线免费播放| 亚洲免费看黄网站| 99热国产精品| 精品久久一区二区三区| 男女男精品视频网| 欧美男人的天堂一二区| 一区二区三区精品在线| 99re热视频精品| 自拍偷拍欧美激情| 97se亚洲国产综合自在线| 亚洲国产精品成人久久综合一区 | 中文字幕欧美激情一区| 国产成人超碰人人澡人人澡| 精品国产91九色蝌蚪| 久久精品噜噜噜成人88aⅴ| 日韩精品一区二区三区中文精品 | 丝袜脚交一区二区| 久久综合中文字幕| 色综合视频一区二区三区高清| 国产精品久久久久久亚洲伦| 色呦呦国产精品| 国产在线国偷精品产拍免费yy| 中文字幕av一区二区三区高| av在线综合网| 亚洲乱码国产乱码精品精小说 | 亚洲综合色网站| 国产亚洲欧美日韩俺去了| 欧美吞精做爰啪啪高潮| thepron国产精品| 国产高清视频一区| 亚洲电影你懂得| 欧美刺激脚交jootjob| 成人免费视频一区二区| 亚洲h在线观看| 亚洲福利视频导航| 亚洲精品伦理在线| 国产精品天干天干在线综合| 欧美精品丝袜久久久中文字幕| 国产精品一色哟哟哟| 最近中文字幕一区二区三区| 久久精品一级爱片| 国产精品精品国产色婷婷| 国产精品欧美精品| 亚洲一区二区三区四区不卡| 国产精品三级在线观看| 中文字幕中文字幕在线一区| 国产精品女同一区二区三区| 亚洲视频资源在线| 一区二区三区久久久| 亚洲国产一区在线观看| 久久国产夜色精品鲁鲁99| 美国毛片一区二区三区| 国产美女久久久久| 色视频成人在线观看免| 欧美人狂配大交3d怪物一区| 欧美xxxxx裸体时装秀| 精品剧情在线观看| 亚洲国产精品一区二区尤物区| 夜夜爽夜夜爽精品视频| 久久99久久久久| 国产成人啪午夜精品网站男同| 蜜桃视频免费观看一区| 国产麻豆9l精品三级站| 欧美日韩精品电影| 亚洲国产电影在线观看| 亚洲综合一区在线| 国产久卡久卡久卡久卡视频精品| 91年精品国产| 国产亚洲综合性久久久影院| 亚洲天堂av一区| gogogo免费视频观看亚洲一| 色天天综合久久久久综合片| 久久久久久9999| 婷婷综合另类小说色区| 成人激情小说网站| 精品国产乱码久久| 麻豆91精品视频| 欧美日韩一区二区电影| 国产精品嫩草99a| 久久精品国产亚洲aⅴ| 在线中文字幕一区二区| 国产精品久久久久永久免费观看| 丝袜美腿成人在线| 欧美一区二区三区男人的天堂| 亚洲色图都市小说| 成人在线视频首页| 国产精品久久久久aaaa| 91在线你懂得| 亚洲第一久久影院| 欧美日产在线观看| 国产精品综合av一区二区国产馆| 欧美成人vr18sexvr| 国产成人免费视频网站高清观看视频| 精品国产电影一区二区| 国产精品中文字幕欧美| 国产亚洲精品aa| 欧美无砖砖区免费| 九九精品一区二区| 国产精品久久久久久户外露出| 91免费观看国产|