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

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

?? ip_arp_udp_tcp.c

?? ARM-LPC2132網頁服務起例子-----------------------
?? C
?? 第 1 頁 / 共 2 頁
字號:
/********************************************* * vim:sw=8:ts=8:si:et * To use the above modeline in vim you must have "set modeline" in your .vimrc * * Author: Guido Socher  * Copyright: GPL V2 * See http://www.gnu.org/licenses/gpl.html * * IP, Arp, UDP and TCP functions. * * The TCP implementation uses some size optimisations which are valid * only if all data can be sent in one single packet. This is however * not a big limitation for a microcontroller as you will anyhow use * small web-pages. The TCP stack is therefore a SDP-TCP stack (single data packet TCP). * * Chip type           : ATMEGA88 with ENC28J60 *********************************************//*

                         \\\|///
                       \\  - -  //
                        (  @ @  )
+---------------------oOOo-(_)-oOOo-------------------------+
|                       WEB SERVER                          |
|            ported to LPC2103 ARM7TDMI-S CPU               |
|                     by Xiaoran Liu                        |
|                       2007.12.16                          |
|                 ZERO research Instutute                   |
|                      www.the0.net                         |
|                            Oooo                           |
+----------------------oooO--(   )--------------------------+
                      (   )   ) /
                       \ (   (_/
                        \_)     

*/

#include "net.h"#include "enc28j60.h"
#define  pgm_read_byte(ptr)  ((char)*(ptr))
static uint8_t wwwport=80;static uint8_t macaddr[6];static uint8_t ipaddr[4];static int16_t info_hdr_len=0;static int16_t info_data_len=0;static uint8_t seqnum=0xa; // my initial tcp sequence number// The Ip checksum is calculated over the ip header only starting// with the header length field and a total length of 20 bytes// unitl ip.dst// You must set the IP checksum field to zero before you start// the calculation.// len for ip is 20.//// For UDP/TCP we do not make up the required pseudo header. Instead we // use the ip.src and ip.dst fields of the real packet:// The udp checksum calculation starts with the ip.src field// Ip.src=4bytes,Ip.dst=4 bytes,Udp header=8bytes + data length=16+len// In other words the len here is 8 + length over which you actually// want to calculate the checksum.// You must set the checksum field to zero before you start// the calculation.// len for udp is: 8 + 8 + data length// len for tcp is: 4+4 + 20 + option len + data length//// For more information on how this algorithm works see:// http://www.netfor2.com/checksum.html// http://www.msc.uky.edu/ken/cs471/notes/chap3.htm// The RFC has also a C code example: http://www.faqs.org/rfcs/rfc1071.htmluint16_t checksum(uint8_t *buf, uint16_t len,uint8_t type){        // type 0=ip         //      1=udp        //      2=tcp        uint32_t sum = 0;        //if(type==0){        //        // do not add anything        //}        if(type==1){                sum+=IP_PROTO_UDP_V; // protocol udp                // the length here is the length of udp (data+header len)                // =length given to this function - (IP.scr+IP.dst length)                sum+=len-8; // = real tcp len        }        if(type==2){                sum+=IP_PROTO_TCP_V;                 // the length here is the length of tcp (data+header len)                // =length given to this function - (IP.scr+IP.dst length)                sum+=len-8; // = real tcp len        }        // build the sum of 16bit words        while(len >1){                sum += 0xFFFF & (((uint32_t)*buf<<8)|*(buf+1));                buf+=2;                len-=2;        }        // if there is a byte left then add it (padded with zero)        if (len){                sum += ((uint32_t)(0xFF & *buf))<<8;        }        // now calculate the sum over the bytes in the sum        // until the result is only 16bit long        while (sum>>16){                sum = (sum & 0xFFFF)+(sum >> 16);        }        // build 1's complement:        return( (uint16_t) sum ^ 0xFFFF);}// you must call this function once before you use any of the other functions:void init_ip_arp_udp_tcp(uint8_t *mymac,uint8_t *myip,uint8_t wwwp){        uint8_t i=0;        wwwport=wwwp;        while(i<4){                ipaddr[i]=myip[i];                i++;        }        i=0;        while(i<6){                macaddr[i]=mymac[i];                i++;        }}uint8_t eth_type_is_arp_and_my_ip(uint8_t *buf,uint16_t len){        uint8_t i=0;        //          if (len<41){                return(0);        }        if(buf[ETH_TYPE_H_P] != ETHTYPE_ARP_H_V ||            buf[ETH_TYPE_L_P] != ETHTYPE_ARP_L_V){                return(0);        }        while(i<4){                if(buf[ETH_ARP_DST_IP_P+i] != ipaddr[i]){                        return(0);                }                i++;        }        return(1);}uint8_t eth_type_is_ip_and_my_ip(uint8_t *buf,uint16_t len){        uint8_t i=0;        //eth+ip+udp header is 42        if (len<42){                return(0);        }        if(buf[ETH_TYPE_H_P]!=ETHTYPE_IP_H_V ||            buf[ETH_TYPE_L_P]!=ETHTYPE_IP_L_V){                return(0);        }        if (buf[IP_HEADER_LEN_VER_P]!=0x45){                // must be IP V4 and 20 byte header                return(0);        }        while(i<4){                if(buf[IP_DST_P+i]!=ipaddr[i]){                        return(0);                }                i++;        }        return(1);}// make a return eth header from a received eth packetvoid make_eth(uint8_t *buf){        uint8_t i=0;        //        //copy the destination mac from the source and fill my mac into src        while(i<6){                buf[ETH_DST_MAC +i]=buf[ETH_SRC_MAC +i];                buf[ETH_SRC_MAC +i]=macaddr[i];                i++;        }}void fill_ip_hdr_checksum(uint8_t *buf){        uint16_t ck;        // clear the 2 byte checksum        buf[IP_CHECKSUM_P]=0;        buf[IP_CHECKSUM_P+1]=0;        buf[IP_FLAGS_P]=0x40; // don't fragment        buf[IP_FLAGS_P+1]=0;  // fragement offset        buf[IP_TTL_P]=64; // ttl        // calculate the checksum:        ck=checksum(&buf[IP_P], IP_HEADER_LEN,0);        buf[IP_CHECKSUM_P]=ck>>8;        buf[IP_CHECKSUM_P+1]=ck& 0xff;}// make a return ip header from a received ip packetvoid make_ip(uint8_t *buf){        uint8_t i=0;        while(i<4){                buf[IP_DST_P+i]=buf[IP_SRC_P+i];                buf[IP_SRC_P+i]=ipaddr[i];                i++;        }        fill_ip_hdr_checksum(buf);}// make a return tcp header from a received tcp packet// rel_ack_num is how much we must step the seq number received from the// other side. We do not send more than 255 bytes of text (=data) in the tcp packet.// If mss=1 then mss is included in the options list//// After calling this function you can fill in the first data byte at TCP_OPTIONS_P+4// If cp_seq=0 then an initial sequence number is used (should be use in synack)// otherwise it is copied from the packet we receivedvoid make_tcphead(uint8_t *buf,uint16_t rel_ack_num,uint8_t mss,uint8_t cp_seq){        uint8_t i=0;        uint8_t tseq;        while(i<2){                buf[TCP_DST_PORT_H_P+i]=buf[TCP_SRC_PORT_H_P+i];                buf[TCP_SRC_PORT_H_P+i]=0; // clear source port                i++;        }        // set source port  (http):        buf[TCP_SRC_PORT_L_P]=wwwport;        i=4;        // sequence numbers:        // add the rel ack num to SEQACK        while(i>0){                rel_ack_num=buf[TCP_SEQ_H_P+i-1]+rel_ack_num;                tseq=buf[TCP_SEQACK_H_P+i-1];                buf[TCP_SEQACK_H_P+i-1]=0xff&rel_ack_num;                if (cp_seq){                        // copy the acknum sent to us into the sequence number                        buf[TCP_SEQ_H_P+i-1]=tseq;                }else{                        buf[TCP_SEQ_H_P+i-1]= 0; // some preset vallue                }                rel_ack_num=rel_ack_num>>8;                i--;        }        if (cp_seq==0){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲777理论| 精品欧美久久久| 亚洲精品中文在线观看| 成人一级片网址| 中文字幕一区二区三区在线播放 | 在线日韩av片| 亚洲精品第1页| 欧美日韩亚洲另类| 精品一区二区在线免费观看| 精品国产伦一区二区三区免费| 狠狠色综合播放一区二区| 国产视频视频一区| 99精品在线观看视频| 亚洲一区精品在线| 欧美一区二区三区四区五区| 国产真实乱对白精彩久久| 国产精品久久久久一区| 欧美在线看片a免费观看| 日本成人在线一区| 久久久久久久久久久黄色| 91在线视频免费91| 日精品一区二区三区| 久久蜜桃一区二区| 91国产免费看| 国产一区二区三区黄视频 | 日韩精品乱码免费| 久久精品这里都是精品| 91浏览器在线视频| 蜜桃久久av一区| 成人免费一区二区三区视频 | 99精品欧美一区二区蜜桃免费| 亚洲电影视频在线| 日本一区二区三级电影在线观看| 在线精品亚洲一区二区不卡| 极品美女销魂一区二区三区免费| 国产精品久久久久久久久图文区| 欧美高清视频一二三区 | 狠狠网亚洲精品| 亚洲欧美日韩中文播放| 欧美一区二区黄| 成人黄页在线观看| 洋洋av久久久久久久一区| 成人激情免费电影网址| 久久精品国产精品亚洲综合| 中文字幕va一区二区三区| 欧美在线免费观看亚洲| 国产一区二区免费视频| 一区二区三区产品免费精品久久75| 欧美一区二区在线不卡| 本田岬高潮一区二区三区| 香蕉加勒比综合久久| 久久久久久久久久看片| 欧美少妇一区二区| 国产乱淫av一区二区三区| 亚洲一二三四在线观看| 欧美激情一区二区三区四区| 91麻豆产精品久久久久久| 琪琪久久久久日韩精品| 日韩一区中文字幕| 久久这里都是精品| 欧美日本一道本| 成人ar影院免费观看视频| 老色鬼精品视频在线观看播放| 亚洲图片欧美激情| 欧美精品一区二区三区久久久| 91成人看片片| 成人激情小说网站| 国产尤物一区二区| 日产精品久久久久久久性色| 一区二区三区在线高清| 精品国产乱码久久久久久1区2区 | 精品视频1区2区3区| 成人深夜在线观看| 蜜桃视频免费观看一区| 亚洲第一搞黄网站| 一区二区三区欧美亚洲| 国产精品美女久久久久高潮| 日韩欧美色综合| 日韩一区二区免费在线观看| 在线一区二区三区四区五区| 国产91综合一区在线观看| 美洲天堂一区二卡三卡四卡视频| 性久久久久久久久久久久| 亚洲综合在线电影| 亚洲欧美韩国综合色| 国产精品成人网| 中文字幕免费观看一区| 欧美精品一区二区三区视频 | 中文字幕一区av| 欧美成人一级视频| 日韩一级免费观看| 91精品国产综合久久精品app| 在线亚洲一区二区| 欧美亚洲禁片免费| 欧美日韩亚洲综合在线| 欧美日韩亚洲国产综合| 在线欧美小视频| 欧美三级乱人伦电影| 欧美日本一区二区在线观看| 欧美人伦禁忌dvd放荡欲情| 欧美日韩一级大片网址| 91精品国产一区二区三区蜜臀| 4438亚洲最大| 日韩免费在线观看| 欧美一区二区久久| 日韩视频123| 久久亚洲精品小早川怜子| 26uuu精品一区二区| 国产欧美一区二区在线| 国产精品久久777777| 亚洲欧美另类小说| 一区二区三区免费| 天堂一区二区在线| 久久99精品国产.久久久久久| 久久超碰97中文字幕| 国产福利一区二区三区视频在线| 国内精品伊人久久久久av一坑 | 高清免费成人av| av亚洲产国偷v产偷v自拍| 欧美在线free| 精品久久久久久亚洲综合网| 亚洲国产精品精华液ab| 玉足女爽爽91| 麻豆高清免费国产一区| 成人午夜免费av| 欧美日韩大陆一区二区| 91精品在线观看入口| 国产日产精品1区| 亚洲最新视频在线播放| 韩国女主播成人在线观看| 暴力调教一区二区三区| 5566中文字幕一区二区电影| 欧美一区二区成人| 亚洲图片另类小说| 麻豆精品在线观看| 91美女精品福利| 亚洲精品一区二区三区蜜桃下载| 国产精品久久久久久久久果冻传媒| 亚洲午夜影视影院在线观看| 精久久久久久久久久久| 色悠久久久久综合欧美99| 日韩精品中文字幕一区二区三区| 亚洲视频你懂的| 韩国三级在线一区| 在线观看av一区二区| 国产日韩视频一区二区三区| 自拍偷拍亚洲欧美日韩| 青青草91视频| 在线免费观看成人短视频| 26uuu欧美| 日日摸夜夜添夜夜添亚洲女人| 国产不卡在线视频| 91精品一区二区三区在线观看| 中文字幕一区二区在线播放| 久久er99精品| 欧美午夜电影网| 国产午夜亚洲精品理论片色戒| 另类人妖一区二区av| 欧美视频中文一区二区三区在线观看| 久久久久久久久久久久电影 | 国产一区二区三区蝌蚪| 精品视频一区三区九区| 国产精品理论片在线观看| 美女久久久精品| 欧美日韩在线亚洲一区蜜芽| 自拍偷在线精品自拍偷无码专区 | 伊人婷婷欧美激情| 日本亚洲视频在线| 欧美精品久久99久久在免费线 | 欧美色图片你懂的| 一区二区三区在线不卡| 99视频精品全部免费在线| 精品福利二区三区| 国产精品影视在线| 欧美变态tickle挠乳网站| 亚洲成a人v欧美综合天堂| 色噜噜狠狠色综合欧洲selulu| 久久精品人人做人人综合 | 日本二三区不卡| 亚洲欧美偷拍三级| 91视视频在线观看入口直接观看www | 亚洲午夜精品17c| 欧美久久久久免费| 亚洲国产成人av好男人在线观看| 欧美日韩成人激情| 视频一区二区国产| 精品国产伦一区二区三区观看体验 | 国产精品18久久久久久久网站| 日本黄色一区二区| 青青草国产成人av片免费| 欧美一区二区三区爱爱| 国产麻豆91精品| 亚洲视频免费观看| 欧美性猛片aaaaaaa做受| 午夜欧美2019年伦理| 91国内精品野花午夜精品| 男女性色大片免费观看一区二区 | 日本aⅴ精品一区二区三区| 日韩亚洲国产中文字幕欧美| 日韩精品免费视频人成|