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

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

?? p21.2.c

?? 《linux編程技術詳解》 linux編程入門的好書
?? C
字號:
//p21.2.c ping程序實現#include <stdio.h>#include <stdlib.h>#include <string.h> #include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <sys/types.h>#include <netinet/ip_icmp.h>#define WAIT_TIME 3#define BUFFER_SIZE 1024u_short cal_cksum(const u_short *addr, register int len, u_short csum){	register int nleft = len;	const u_short *w = addr;	register u_short answer;	register int sum = csum;		/**  使用32位累加器實現校驗碼的計算	*  聯系對16位數進行累加,最后將高16位與低16位進行累加	*/		while (nleft > 1)  {			sum += *w++;			nleft -= 2;		}				/* 如果最后剩余8位,補齊到16位(補零,同時注意網絡字節與	主機字節間的轉換) */		if (nleft == 1)			sum += htons(*(u_char *)w << 8);				/** 將高低16位相加,以消除累加時進位問題*/		sum = (sum >> 16) + (sum & 0xffff);	/* 高低16位相加 */		sum += (sum >> 16);			/* 消除高低位相加的進位問題 */		answer = ~sum;				/* 取反 */		return (answer);}//ICMP報頭解析代碼int unpack_packet_header(char *buf,int len,struct sockaddr_in *from){       int i,iphdrlen;        struct ip *ip;        struct icmp *icmp;        struct timeval *tvsend;	struct timeval tvrecv;        double rtt;        ip=(struct ip *)buf;                //ip報頭長度= ip_hl*4        iphdrlen=ip->ip_hl*4;            //得到ICMP報文信息        icmp=(struct icmp *)(buf+iphdrlen);         //icmp報文總長度        len-=iphdrlen;         //如果長度小于要求,退出程序                   if( len<8)                        {       printf("ICMP packets\'s length is less than 8\n");                return -1;        }        if( icmp->icmp_type==ICMP_ECHOREPLY)        {       tvsend=(struct timeval *)icmp->icmp_data;		gettimeofday(&tvrecv,NULL);                //得到接收時間,并計算兩者時間差                if((tvrecv.tv_usec-=tvsend->tv_usec)<0){			tvrecv.tv_sec--;			tvrecv.tv_usec+=1000000;  		}				tvrecv.tv_sec-=tvsend->tv_sec;                rtt=tvrecv.tv_sec*1000+tvrecv.tv_usec/1000;                 //顯示時間信息                printf("%d byte from %s: icmp_seq=%u ttl=%d rtt=%.3f ms\n",                        len,                        inet_ntoa(from->sin_addr),                        icmp->icmp_seq,                        ip->ip_ttl,                        rtt);        } else                    return -1;}		intmain(int argc, char * argv[]){    int sock;    struct sockaddr_in sin;    unsigned short local_port;    unsigned char protocol;    char * buffer, * buffer2, * dnsdata;    struct iphdr * ip_header;    struct icmphdr * icmp_header;    char * remote_ip_str;    unsigned short buffer_size, buffer_size2;    int tmp, len;    short randomseq;     //判斷參數是否符合程序運行要求    if (argc != 3) {        fprintf(stderr, "USAGE: %s port destination\n", argv[0]);        return 1;    }     protocol = IPPROTO_ICMP;     local_port = atoi(argv[1]);    remote_ip_str = argv[2];    //創建通信所需套接字,注意套接字類型為原始套接字    if ((sock = socket(PF_INET, SOCK_RAW, protocol)) < 0) {         perror("socket");        exit(1);    }    memset(& sin, 0, sizeof(sin));    sin.sin_port = htons(local_port);     //完成套接字與端口、地址信息的綁定    if ((bind(sock, (struct sockaddr *)& sin, sizeof(sin))) < 0) {        perror("bind");        exit(1);    }     tmp = 1;    setsockopt(sock, 0, IP_HDRINCL, & tmp, sizeof(tmp));     //申請內存空間,并填寫包頭信息    buffer_size = sizeof(struct iphdr) + sizeof(struct icmphdr)		+ sizeof(struct timeval);    buffer_size2 = BUFFER_SIZE;    buffer = (char *) malloc(buffer_size);    buffer2 = (char *) malloc(buffer_size2);     memset(buffer, 0, sizeof(buffer));     memset(& sin, 0, sizeof(sin));    sin.sin_family = AF_INET;    sin.sin_addr.s_addr = inet_addr(remote_ip_str);     ip_header = (struct iphdr *) buffer;    ip_header->ihl = 5;    ip_header->version = 4;    ip_header->tos = 0;    ip_header->tot_len = htons(buffer_size);    ip_header->id = rand();    ip_header->ttl = 64;    ip_header->frag_off = 0x40;    ip_header->protocol = protocol;    ip_header->check = 0;     ip_header->daddr = inet_addr(remote_ip_str);    ip_header->saddr = 0;      icmp_header = (struct icmphdr *) (ip_header + 1);    icmp_header->type = ICMP_ECHO;    icmp_header->code = 0;    icmp_header->un.echo.id = htons(local_port);    icmp_header->un.echo.sequence = 0;	struct timeval *tp = (struct timeval *)&buffer[28];	gettimeofday(tp, NULL);		icmp_header->checksum = cal_cksum((const u_short *) icmp_header, sizeof(struct icmphdr) + sizeof(struct timeval), 0);				      //發送該IP數據包    if (sendto(sock, buffer, buffer_size, 0, (struct sockaddr *) &sin,sizeof(struct sockaddr_in)) < 0)     {        perror("sendto");	return 1;    }     printf("send ICMP inquery\n"); len = sizeof(sin);    alarm(WAIT_TIME);//接收對方回應的數據,并給出提示    if (recvfrom(sock, buffer2, buffer_size2, 0, (struct sockaddr *) &sin, &len) < 0) {        perror("recvfrom");        return 1;    }    printf("received Destionation response\n");   //顯示報文信息    unpack_packet_header(buffer2,buffer_size2,(struct sockaddr_in *)&sin);     close(sock);    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线一区二区三区| 久久精品夜色噜噜亚洲aⅴ| 免费高清成人在线| 国产精品蜜臀av| 精品国产一区二区三区久久久蜜月 | 美女一区二区视频| 性久久久久久久| 精品国产乱码久久| 日韩精品成人一区二区三区| 欧美情侣在线播放| 亚洲色图丝袜美腿| 久久久亚洲午夜电影| 成人开心网精品视频| 五月激情丁香一区二区三区| 国产三级精品在线| 日韩欧美一级特黄在线播放| 精品区一区二区| 欧洲一区在线观看| 国产精品第一页第二页第三页| 成人高清在线视频| 久久久久久久电影| 欧美嫩在线观看| 麻豆精品国产91久久久久久| 日韩理论片一区二区| 中文无字幕一区二区三区| 日韩欧美国产午夜精品| 欧美大片国产精品| 精品少妇一区二区三区免费观看| 制服丝袜av成人在线看| 欧美精品在线观看一区二区| 欧美在线看片a免费观看| 95精品视频在线| 在线观看免费一区| 精品视频在线视频| 这里只有精品电影| 久久先锋影音av鲁色资源| 久久久久久亚洲综合| 欧美国产日韩亚洲一区| **性色生活片久久毛片| 午夜免费欧美电影| 韩国理伦片一区二区三区在线播放| 久久99久久久欧美国产| 国产成人精品免费视频网站| 成人免费av在线| 欧美日韩免费观看一区三区| 精品国产乱码91久久久久久网站| 久久久综合网站| 亚洲成人高清在线| 激情欧美日韩一区二区| 91国偷自产一区二区开放时间| 欧美日韩国产免费| 中文字幕一区二区三区不卡 | 久久夜色精品一区| 综合在线观看色| 国产在线视频一区二区三区| 91福利资源站| 亚洲欧洲精品一区二区精品久久久 | 欧美性猛片xxxx免费看久爱| 日韩午夜中文字幕| 亚洲一区二区欧美激情| 国产成人无遮挡在线视频| 欧美午夜宅男影院| 国产亚洲欧美日韩俺去了| 亚洲a一区二区| 日本视频中文字幕一区二区三区| 天天影视涩香欲综合网 | 亚洲成人动漫在线免费观看| 成熟亚洲日本毛茸茸凸凹| 91精品国产丝袜白色高跟鞋| 国产精品视频九色porn| 狠狠色丁香婷综合久久| 欧美影片第一页| 亚洲欧美韩国综合色| 国产成人av电影在线观看| 欧美一区二区三区四区在线观看| 欧美一区二区三区色| 蜜桃久久久久久| 欧美日韩一区二区三区高清 | 99久久99久久精品免费观看| 欧美成人官网二区| 青青草伊人久久| 日韩丝袜情趣美女图片| 午夜亚洲国产au精品一区二区| 福利视频网站一区二区三区| 国产精品久久久久久久裸模| 精品无码三级在线观看视频| 欧美久久婷婷综合色| 2024国产精品| 国产麻豆视频精品| 国产精品美日韩| 99r精品视频| 一区二区三区四区五区视频在线观看 | 成人精品视频一区| 国产精品久久久久久久久免费相片| 国产日本欧洲亚洲| 一区二区三区欧美久久| 色噜噜狠狠色综合中国| 亚洲日本乱码在线观看| 99精品1区2区| 午夜久久久影院| 精品盗摄一区二区三区| 成人中文字幕电影| 一区二区三区欧美激情| 日韩一区二区三区精品视频| 国产激情91久久精品导航| 一区二区三区欧美| 久久综合九色综合欧美就去吻 | 五月天视频一区| 中文字幕亚洲电影| 精品噜噜噜噜久久久久久久久试看| 高清shemale亚洲人妖| 午夜精品一区二区三区电影天堂 | 国产成人欧美日韩在线电影| 久久久久久久综合色一本| 在线精品国精品国产尤物884a| 精品一区二区三区免费| 亚洲一二三区在线观看| 久久综合丝袜日本网| 欧美三级视频在线观看| 国产精品996| 久久99精品久久久久久动态图| 亚洲欧洲日韩女同| 亚洲欧美日韩国产综合在线 | 亚洲图片激情小说| 久久久精品黄色| 精品国产乱码久久久久久免费| 91麻豆精品在线观看| 成人国产亚洲欧美成人综合网| 日韩电影免费在线| 亚洲777理论| 午夜欧美大尺度福利影院在线看| 亚洲天堂精品在线观看| 国产精品久久福利| 国产精品美女一区二区三区| 久久中文娱乐网| 国产日韩欧美一区二区三区乱码| 精品日韩av一区二区| 精品成人一区二区| 久久久不卡网国产精品一区| 精品蜜桃在线看| 精品免费一区二区三区| 久久午夜羞羞影院免费观看| 国产亚洲精品中文字幕| 亚洲色图都市小说| 日韩专区中文字幕一区二区| 首页亚洲欧美制服丝腿| 久99久精品视频免费观看| 韩国午夜理伦三级不卡影院| av网站免费线看精品| 在线一区二区视频| 色香蕉成人二区免费| 欧美成人官网二区| 自拍视频在线观看一区二区| 依依成人综合视频| 麻豆精品新av中文字幕| 国产伦精品一区二区三区视频青涩| 国产成人亚洲综合a∨猫咪| 91视频一区二区| 国产午夜精品一区二区三区视频| 国产精品久久免费看| 亚洲超丰满肉感bbw| 国产成人精品亚洲午夜麻豆| 欧美三级资源在线| 久久亚洲私人国产精品va媚药| 亚洲欧美一区二区久久| 久久99精品国产.久久久久久| 99re这里只有精品视频首页| 欧美人牲a欧美精品| 亚洲色图在线看| 福利91精品一区二区三区| 欧美一区二区三区婷婷月色| 一区二区三区欧美激情| 国产不卡免费视频| 日韩欧美自拍偷拍| 亚洲人成亚洲人成在线观看图片 | 国产九色精品成人porny| 欧美日韩一本到| 亚洲国产一二三| 色悠悠亚洲一区二区| 亚洲国产成人一区二区三区| 欧美aaaaa成人免费观看视频| 国产酒店精品激情| 久久综合色播五月| 国模少妇一区二区三区| 日韩一区二区三区视频在线| 亚洲国产日日夜夜| 波多野结衣在线aⅴ中文字幕不卡| 精品噜噜噜噜久久久久久久久试看| 1024成人网| 成人一区二区三区视频| 国产日韩精品一区二区三区在线| 精品亚洲aⅴ乱码一区二区三区| 欧美片在线播放| 久久精品久久99精品久久| 在线观看日韩国产| 老司机免费视频一区二区| 精品国免费一区二区三区| 国产不卡视频在线播放| 国产精品毛片久久久久久| 色哟哟国产精品免费观看|