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

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

?? udp.lst

?? c51和8019實現單片機上網
?? LST
字號:
C51 COMPILER V7.09   UDP                                                                   07/31/2006 17:30:56 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE UDP
OBJECT MODULE PLACED IN UDP.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UDP.C OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //-----------------------------------------------------------------------------
   2          // Net UDP.C
   3          //
   4          // This module handles UDP messages
   5          // Refer to RFC 768, 1122
   6          // Also RFC 862 echo, RFC 867 daytime, and RFC 868 time
   7          //-----------------------------------------------------------------------------
   8          #include <string.h>
   9          #include <stdlib.h>
  10          #include "C8051f.h"
  11          #include "net.h"
  12          #include "ip.h"
  13          #include "cksum.h"
  14          #include "serial.h"
  15          #include "icmp.h"
  16          #include "udp.h"
  17          
  18          extern UCHAR idata debug;
  19          extern ULONG code my_ipaddr;
  20          UINT xdata sender_udpport;
  21          static ULONG xdata sender_ipaddr;
  22          extern char xdata text[];
  23          
  24          
  25          //------------------------------------------------------------------------
  26          //      UDP Echo service - see RFC 862
  27          // This simply echos what it received back to the sender
  28          //------------------------------------------------------------------------
  29          void udp_echo_service(UCHAR xdata * inbuf, UINT len)
  30          {
  31   1         if (debug)
  32   1         {
  33   2            serial_send("ECHO: Nr chars = ");
  34   2            memset(text, 0, 10);
  35   2            itoa(len, text, 10);
  36   2            serial_send(text);
  37   2                 serial_send("\r");
  38   2         }
  39   1              udp_send(inbuf, ECHO_PORT, len);      
  40   1      }
  41          
  42          
  43          
  44          //------------------------------------------------------------------------
  45          //      This handles outgoing UDP messages
  46          // See "TCP/IP Illustrated, Volume 1" Sect 11.1 - 11.3
  47          //------------------------------------------------------------------------
  48          void udp_send(UCHAR xdata * inbuf, UINT port, UINT len)
  49          {
  50   1              ULONG idata sum;
  51   1              UINT idata result;
  52   1              UCHAR xdata * outbuf;
  53   1              UDP_HEADER xdata * udp;
  54   1         IP_HEADER xdata * ip;
  55   1              
C51 COMPILER V7.09   UDP                                                                   07/31/2006 17:30:56 PAGE 2   

  56   1         // Allocate memory for entire outgoing message including
  57   1         // eth & IP headers. Total ethernet message length is:
  58   1         // 14 byte eth header + 20 byte IP header + 8 byte UDP header
  59   1         // + length of this data 
  60   1         outbuf = (UCHAR xdata *)malloc(42 + len);
  61   1         if (outbuf == NULL)
  62   1         {
  63   2            if (debug) serial_send("UDP: Oops, out of memory\r");
  64   2            return;
  65   2         }
  66   1         
  67   1         udp = (UDP_HEADER xdata *)(outbuf + 34);
  68   1         ip = (IP_HEADER xdata *)(outbuf + 14);
  69   1         
  70   1         // Direct message back to the senders port. 
  71   1              udp->dest_port = sender_udpport;
  72   1              udp->source_port = port;
  73   1              udp->length = 8 + len;
  74   1              udp->checksum = 0;
  75   1                      
  76   1              // Fill in data
  77   1         // Important do not free receive buffer prior to this
  78   1         memcpy(&udp->msg_data, (inbuf + 42), len); 
  79   1              
  80   1              
  81   1              // Compute checksum including 12 bytes of pseudoheader
  82   1              // Must pre-fill 2 items in outbuf to do this
  83   1              // Direct message back to senders ip address
  84   1              ip->dest_ipaddr = sender_ipaddr;
  85   1              ip->source_ipaddr = my_ipaddr;
  86   1               
  87   1              
  88   1              // Sum source_ipaddr, dest_ipaddr, and entire UDP message 
  89   1              sum = (ULONG)cksum(outbuf + 26, 8 + udp->length);
  90   1                              
  91   1              // Add in the rest of pseudoheader which is
  92   1              // zero, protocol id, and UDP length
  93   1              sum += (ULONG)0x0011;
  94   1              sum += (ULONG)udp->length;
  95   1      
  96   1              // In case there was a carry, add it back around
  97   1              result = (UINT)(sum + (sum >> 16));
  98   1              udp->checksum = ~result;
  99   1         if (debug) serial_send("UDP: Sending msg to IP layer\r");
 100   1              ip_send(outbuf, sender_ipaddr, UDP_TYPE, udp->length);
 101   1      }
 102          
 103          
 104          
 105          //------------------------------------------------------------------------
 106          // This handles incoming UDP messages
 107          // See "TCP/IP Illustrated, Volume 1" Sect 11.1 - 11.3
 108          //------------------------------------------------------------------------
 109          void udp_rcve(UCHAR xdata * inbuf, UINT len)
 110          {
 111   1         UINT idata result;
 112   1         UDP_HEADER xdata * udp;
 113   1         IP_HEADER xdata * ip;
 114   1         ULONG idata sum;
 115   1            
 116   1              // Total of eth & IP headers = 34 bytes      
 117   1         udp = (UDP_HEADER xdata *)(inbuf + 34);
C51 COMPILER V7.09   UDP                                                                   07/31/2006 17:30:56 PAGE 3   

 118   1         ip = (IP_HEADER xdata *)(inbuf + 14);
 119   1                              
 120   1              // The IP length "len" should be the same as the redundant length
 121   1              // udp->length.  TCP/IP Illustrated, Vol 2, Sect 23.7 says to use the
 122   1              // UDP length, unless IP length < UDP length, in which case the frame
 123   1              // should be discarded.
 124   1         if (len < udp->length) return;
 125   1                         
 126   1              // If the checksum is zero it means that the sender did not compute
 127   1              // it and we should not try to check it.
 128   1              if (udp->checksum == 0)
 129   1              {
 130   2                      if (debug) serial_send("UDP: Sender did not compute cksum\r");
 131   2              }
 132   1              else
 133   1              {
 134   2                      // Compute UDP checksum including 12 byte pseudoheader
 135   2                      // Sum source_ipaddr, dest_ipaddr, and entire UDP message 
 136   2                      sum = (ULONG)cksum(inbuf + 26, 8 + udp->length);
 137   2                      
 138   2                      // Add in the rest of pseudoheader which is
 139   2                      // zero, protocol id, and UDP length
 140   2                      sum += (ULONG)0x0011;     
 141   2                      sum += (ULONG)udp->length;
 142   2      
 143   2                      // In case there was a carry, add it back around
 144   2                      result = (UINT)(sum + (sum >> 16));
 145   2                      
 146   2                      if (result != 0xFFFF)
 147   2                      {
 148   3                              if (debug) serial_send("UDP: Error, bad cksum\r");
 149   3                              return;
 150   3                      }
 151   2              
 152   2                      if (debug) serial_send("UDP: Msg rcvd with good cksum\r");
 153   2              }
 154   1                      
 155   1              // Capture sender's port number and ip_addr
 156   1              // to send return message to
 157   1              sender_udpport = udp->source_port;
 158   1         sender_ipaddr = ip->source_ipaddr;
 159   1                                            
 160   1              // See if any applications are on any ports
 161   1              switch (udp->dest_port)
 162   1              {
 163   2                      case ECHO_PORT:
 164   2                      // Pass it the payload length
 165   2                      udp_echo_service(inbuf, udp->length - 8);
 166   2                      break;
 167   2      
 168   2                      default:
 169   2                      // If no application is registered to handle incoming
 170   2                      // UDP message then send ICMP destination unreachable
 171   2                      dest_unreach_send(inbuf, ip->source_ipaddr);
 172   2                      break;
 173   2              }
 174   1      }
 175          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    789    ----
C51 COMPILER V7.09   UDP                                                                   07/31/2006 17:30:56 PAGE 4   

   CONSTANT SIZE    =    165    ----
   XDATA SIZE       =      6    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      22
   IDATA SIZE       =   ----      12
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品久久理论片| 久草在线在线精品观看| 日韩精品中午字幕| 99精品视频在线观看| 蜜臀国产一区二区三区在线播放| 中文字幕在线播放不卡一区| 欧美sm美女调教| 欧美性高清videossexo| 成人a免费在线看| 精品一区二区三区在线播放| 午夜精品一区在线观看| 亚洲女性喷水在线观看一区| 久久久精品综合| 精品国产一区二区三区久久影院| 欧美午夜一区二区三区免费大片| www.亚洲在线| 国产成人日日夜夜| 国产主播一区二区三区| 青青草成人在线观看| 亚洲一区免费观看| 亚洲精品写真福利| 亚洲欧美在线另类| 国产婷婷精品av在线| 欧美精品一区二区三区高清aⅴ | 久久国产麻豆精品| 亚洲电影激情视频网站| 亚洲午夜久久久久久久久久久| 日本一区二区三区在线不卡| 精品国产乱码久久| 欧美tickling挠脚心丨vk| 欧美一区二区精美| 91精品国产综合久久久蜜臀粉嫩 | 99精品国产视频| gogo大胆日本视频一区| caoporm超碰国产精品| 国产盗摄一区二区三区| 国产成人精品免费视频网站| 国产尤物一区二区| 国产成人精品一区二区三区网站观看| 伦理电影国产精品| 国产老妇另类xxxxx| 国产一区二区三区久久久| 国产乱码精品一区二区三区五月婷| 麻豆成人在线观看| 激情小说欧美图片| 成人免费视频免费观看| www.欧美色图| 欧美中文字幕亚洲一区二区va在线 | 色噜噜狠狠成人中文综合| 91福利区一区二区三区| 欧美三区免费完整视频在线观看| 欧美色图12p| 678五月天丁香亚洲综合网| 日韩欧美一二区| 久久综合一区二区| 国产精品欧美精品| 亚洲自拍偷拍网站| 免费一级片91| 国产精品一区在线观看乱码| 99久久精品99国产精品| 欧美在线不卡一区| 欧美一区国产二区| 精品国产一区二区三区不卡| 国产精品视频一二三区| 亚洲一区二区欧美日韩| 精品在线你懂的| 东方aⅴ免费观看久久av| 一本一本久久a久久精品综合麻豆| 欧美精品乱人伦久久久久久| 久久嫩草精品久久久精品| 国产精品美女久久久久aⅴ国产馆| 亚洲精品欧美激情| 久久er精品视频| 91在线码无精品| 中文无字幕一区二区三区 | 欧美三级电影网站| 久久免费的精品国产v∧| 亚洲精选视频在线| 激情深爱一区二区| 欧美午夜电影在线播放| 久久精品夜夜夜夜久久| 一个色在线综合| 国产福利91精品一区二区三区| 91国偷自产一区二区开放时间 | 一区二区三区免费在线观看| 久久狠狠亚洲综合| 在线观看亚洲一区| 久久久久久电影| 三级欧美在线一区| 94-欧美-setu| 久久精品视频一区二区| 亚洲二区在线观看| 波多野洁衣一区| 精品黑人一区二区三区久久| 亚洲影视在线播放| 成人在线视频一区二区| 日韩三级在线观看| 亚洲精品欧美综合四区| 国产成人在线网站| 91精品国产91热久久久做人人| 国产精品久久久久婷婷| 另类小说一区二区三区| 欧洲一区在线电影| 国产精品女主播av| 国产一区二区三区香蕉| 欧美久久一区二区| 亚洲免费视频成人| www.日韩大片| 国产欧美日韩综合| 国内成人免费视频| 日韩欧美二区三区| 日本美女视频一区二区| 欧美午夜一区二区三区| 最新不卡av在线| 成人精品免费视频| 久久婷婷国产综合国色天香| 日韩电影在线一区二区三区| 欧美在线观看一二区| 中文字幕亚洲一区二区va在线| 国产成人在线免费观看| 精品成人在线观看| 青青草原综合久久大伊人精品优势| 欧美天天综合网| 亚洲精品国产成人久久av盗摄 | 欧美电影免费观看高清完整版在 | 一本久久a久久精品亚洲| 国产精品三级在线观看| 国产精品系列在线观看| 日韩欧美一二三四区| 老司机精品视频在线| 欧美一区二区啪啪| 免费在线观看一区| 日韩视频在线你懂得| 日韩福利视频网| 91精品国产综合久久香蕉的特点 | 国产精品美女久久福利网站| 国产激情精品久久久第一区二区| 久久久久国产精品麻豆| 国产成人av资源| 综合激情成人伊人| 色综合久久久久综合99| 亚洲精品欧美激情| 欧美精品粉嫩高潮一区二区| 日本网站在线观看一区二区三区 | 日韩激情视频网站| 欧美一区二区三区日韩| 美女视频黄 久久| 26uuu色噜噜精品一区| 国产成人免费在线观看| 最新国产成人在线观看| 欧美中文字幕一区二区三区| 午夜亚洲福利老司机| 欧美一区三区二区| 国产在线视视频有精品| 国产精品网站一区| 在线免费不卡电影| 日本欧美韩国一区三区| 精品国产91九色蝌蚪| 成年人午夜久久久| 亚洲第一电影网| 久久久亚洲精华液精华液精华液 | 北条麻妃国产九九精品视频| 一区二区欧美精品| 欧美一区二区三区免费视频| 粉嫩蜜臀av国产精品网站| 亚洲精品水蜜桃| 日韩精品影音先锋| 成人国产一区二区三区精品| 亚洲国产wwwccc36天堂| 久久亚洲综合av| 91蜜桃传媒精品久久久一区二区| 水野朝阳av一区二区三区| 久久久国产精华| 欧美伊人久久久久久久久影院 | 久久激情五月婷婷| 亚洲欧洲日本在线| 日韩一区二区电影网| 9i在线看片成人免费| 奇米888四色在线精品| 欧美韩国日本不卡| 欧美猛男gaygay网站| 国产精品一区专区| 图片区小说区国产精品视频| 欧美国产成人精品| 欧美一区二区在线不卡| 91亚洲精品久久久蜜桃网站| 日本va欧美va精品| 亚洲乱码国产乱码精品精可以看 | 国产精品欧美一级免费| 91精品国产欧美日韩| 北岛玲一区二区三区四区| 青娱乐精品视频| 亚洲综合激情另类小说区| 久久综合九色综合欧美就去吻| 欧美日韩中文精品| hitomi一区二区三区精品| 国产做a爰片久久毛片| 日日摸夜夜添夜夜添精品视频| 日韩黄色免费网站| 一区在线中文字幕|