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

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

?? ping.c

?? 這是ICMP源程序包含PING的接收和發(fā)送
?? C
字號(hào):
/* * Created with help from Mike Muuss' PING.C * (part of netkit-base-0.17) *   AND * Help from Beej's guide to network programming * http://www.ecst.csuchico.edu/~beej/guide/net/ */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <netinet/ip.h>#include <sys/timeb.h>#include "Ping.h"#define INPACK_LENGTH 65535#define OUTPACK_LENGTH 65535struct icmp_echo {    u_int8_t type;    u_int8_t code;    u_int16_t checksum;    u_int16_t identifier;    u_int16_t sequence_number;};char *icmp_data;pid_t ident = 0;u_int16_t seq = 0;int sockfd_global;int invalid_checksum = 0;/* * Borrowed the checksum code from: * http://www.fenix.ne.jp/~thomas/memo/ip/checksum.html */unsigned short checksum(unsigned short *buf, int size) {    unsigned long sum = 0;    while (size > 1) {	sum += *buf++;	size -= 2;    }    if (size) {	sum += *(u_int8_t *)buf;    }    sum = (sum & 0xffff) + (sum >> 16);    sum = (sum & 0xffff) + (sum >> 16);    return ~sum;}int send_echo_request(int sockfd, struct sockaddr_in *their_addr, char *data) {    void *outpack = malloc(OUTPACK_LENGTH);    size_t space = 0;    struct icmp_echo *echo_packet;    int numbytes = 0;    echo_packet = malloc(sizeof(struct icmp_echo));    if (echo_packet == NULL)	return -3;        echo_packet->type = 8;    echo_packet->code = 0;    echo_packet->checksum = 0;    echo_packet->identifier = (u_int16_t) getpid();    echo_packet->sequence_number = seq;        memcpy(outpack, echo_packet, sizeof(struct icmp_echo));    space += sizeof(struct icmp_echo);    memcpy(outpack+(sizeof(struct icmp_echo)), data, strlen(data));    space += strlen(data);    invalid_checksum = 0;        echo_packet->checksum = checksum((unsigned short *)		    outpack, space);    memcpy(outpack, echo_packet, sizeof(struct icmp_echo));        numbytes = sendto(sockfd, (void *) outpack, space, 0,		    (struct sockaddr *)their_addr, sizeof(struct sockaddr));    if (numbytes == -1) {	return -4;    }    free(outpack);        return 0;}/* * int icmp_echo_send(char *host, int sequence, char *data); * * Parameters: *    host     - host to send icmp echo packet to *    sequence - packet sequence number *    data     - data to include in packet * * Return Values: *    0        - icmp echo send success *    -1       - failure looking up hostname *    -2       - failure creating network socket *    -3       - error malloc'ing memory *    -4       - error sending packet */int icmp_echo_send(char *host, int sequence, char *data) {    int sockfd;    int packlen = 0;    struct hostent *he;    struct sockaddr_in dest;    if ((he = gethostbyname(host)) == NULL)	return -1;        sockfd = socket(PF_INET, SOCK_RAW, 1);    sockfd_global = sockfd;    if (sockfd == -1)	return -2;    dest.sin_family = PF_INET;    dest.sin_port = htons(0);    dest.sin_addr = *((struct in_addr *)he->h_addr);    memset(&(dest.sin_zero), '\0', 8);    ident = getpid();    seq = sequence;        return send_echo_request(sockfd, &dest, data);}/* * JNI Wrapper code to icmp_echo_send() */JNIEXPORT jint JNICALL Java_Ping_icmp_1send (JNIEnv *env, jobject obj,		jstring host, jint s, jstring data) {    jint retval;        char *h = (*env)->GetStringUTFChars(env, host, 0);    char *d = (*env)->GetStringUTFChars(env, data, 0);    retval = (jint) icmp_echo_send(h, s, d);    (*env)->ReleaseStringUTFChars(env, host, h);    (*env)->ReleaseStringUTFChars(env, data, d);    return retval;}/*  * JNI Wrapper code to icmp_echo_reply() * (returns NULL if a error occours receiving the packet, * or packet timeout expires) */JNIEXPORT jstring JNICALL Java_Ping_icmp_1recv (JNIEnv *env, jobject obj,		jint t) {    int retval = icmp_echo_reply(t);    jstring tmp;    if (retval < 0) {	return NULL;    }    tmp = (*env)->NewStringUTF(env, icmp_data);    free(icmp_data);        return tmp;}#ifndef LIB/* * Small implementation of ping code for testing purposes */int main(int argc, char *argv[]) {    int retval = 0;     struct timeb start;    struct timeb end;    struct timeb res;    struct hostent *h;    if (argc != 5) {	fprintf(stderr, "Error! Usage:\n");	fprintf(stderr, "  %s <dst host> <seq num> <data> <timeout>\n",			argv[0]);	exit(1);    }    if ((h = gethostbyname(argv[1])) == NULL) {	herror("gethostbyname");	exit(1);    }    printf("icmp echo (request) to %s [%s]\n", h->h_name,		    inet_ntoa(*((struct in_addr *)h->h_addr)));        ftime(&start);    retval = icmp_echo_send(argv[1], atoi(argv[2]), argv[3]);    if (retval < 0) {	fprintf(stderr, "Error (%d) sending packet\n", retval);	return;    }        retval = icmp_echo_reply(atoi(argv[4]));    ftime(&end);    if (retval < 0) {	printf("[TIMEOUT]\n");	return 1;    }       if (start.millitm > end.millitm) {	end.time -= 1;	end.millitm += 1000;    }    printf("time delta: %ds%dms", end.time - start.time,		    end.millitm - start.millitm);    if (invalid_checksum) {	printf("   [INCORRECT CHECKSUM]");    }    printf("\n");    return 0;}#endifint icmp_reply(void *inpack, int packlen) {    struct ip *ip_pkt = malloc(sizeof(struct ip));    struct icmp_echo *icmp_pkt = malloc(sizeof(struct icmp_echo));    size_t ipoptlen;    size_t hlen;    void *data = malloc(INPACK_LENGTH);    void *tmp_ck = malloc(OUTPACK_LENGTH);    u_int16_t cksum, cksum_tmp;    size_t space = 0;    ip_pkt = (struct ip *)inpack;    hlen = ip_pkt->ip_hl << 2;    ipoptlen = hlen - sizeof(struct ip);    packlen -= hlen;        icmp_pkt = (struct icmp_echo *) (inpack+hlen);    if ((u_int16_t) getpid() != icmp_pkt->identifier) {	return -1;    }        memcpy(data, inpack+hlen+8, packlen-8);    cksum = icmp_pkt->checksum;    icmp_pkt->checksum = 0;        memcpy(tmp_ck, icmp_pkt, sizeof(struct icmp_echo));    space += sizeof(struct icmp_echo);    memcpy(tmp_ck+(sizeof(struct icmp_echo)), data, strlen(data));    space += strlen(data);    cksum_tmp = checksum((unsigned short *) tmp_ck, space);    if (cksum_tmp != cksum) {	invalid_checksum = 1;    }    icmp_pkt->checksum = cksum;    icmp_data = malloc(INPACK_LENGTH);    sprintf(icmp_data, "%d %s\0", icmp_pkt->sequence_number, data);#ifdef DEBUG    printf("received: ");    printf("type: %x\n", icmp_pkt->type);    printf("code: %x\n", icmp_pkt->code);    printf("checksum: %x\n", icmp_pkt->checksum);    printf("sequence: %d\n", icmp_pkt->sequence_number);    printf("identifier: %d\n", icmp_pkt->identifier);    printf("%s\n", (char *)data);#endif        return 0;}int icmp_echo_reply(int timeout) {    int packlen = 0, retval = 0;    void *inpack = malloc(INPACK_LENGTH);    fd_set readfds;    struct timeval tv;    struct sockaddr_in from;    socklen_t fromlen = sizeof(from);    int sockfd = sockfd_global;    FD_ZERO(&readfds);    FD_SET(sockfd, &readfds);    tv.tv_sec = timeout;    tv.tv_usec = 0;    while (tv.tv_sec > 0) {	retval = select(sockfd + 1, &readfds, NULL, NULL, &tv);	if (retval > 0) {	    packlen = recvfrom(sockfd, inpack, INPACK_LENGTH, 0,			    (struct sockaddr *)&from, &fromlen);	    if ((icmp_reply(inpack, packlen)) == -1) {#ifdef DEBUG		printf("Not our packet!\n");#endif		continue;	    } else {		return 0;	    }	} else {	    return -1;	}    }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲一本大道中文在线| 日本亚洲欧美天堂免费| 亚洲国产综合视频在线观看| 美国欧美日韩国产在线播放| 不卡av在线网| 欧美变态口味重另类| 亚洲自拍另类综合| 国产69精品久久99不卡| 欧美大片一区二区三区| 亚洲一区二区高清| 色综合久久久久综合| 久久久亚洲午夜电影| 日本大胆欧美人术艺术动态| 色网站国产精品| 国产精品国产三级国产普通话99 | 最近中文字幕一区二区三区| 美女网站在线免费欧美精品| 91免费在线播放| 国产精品电影一区二区三区| 国产成人在线观看| 久久综合九色综合欧美就去吻| 免费在线欧美视频| 欧美日韩专区在线| 亚洲成人一区二区在线观看| 色综合天天综合色综合av| 国产精品乱码一区二区三区软件| 国产在线播放一区| 久久久99久久| 大胆欧美人体老妇| 国产精品区一区二区三| 成人国产亚洲欧美成人综合网| 久久久精品影视| 国产成人在线视频免费播放| 久久精品一二三| 成人av电影观看| 亚洲欧美日韩电影| 欧美羞羞免费网站| 亚洲国产日韩一级| 欧美一卡二卡三卡四卡| 久久成人免费电影| 久久夜色精品一区| 成人国产免费视频| 一区二区国产盗摄色噜噜| 欧美色精品天天在线观看视频| 午夜天堂影视香蕉久久| 日韩欧美综合在线| 国产不卡免费视频| 亚洲精品视频一区| 在线不卡的av| 精品一区二区三区在线播放| 日韩欧美一卡二卡| 风间由美一区二区av101| 一区二区中文视频| 欧美系列一区二区| 激情偷乱视频一区二区三区| 亚洲国产精品国自产拍av| 91久久免费观看| 秋霞电影网一区二区| 国产校园另类小说区| 成人av资源下载| 亚洲午夜精品在线| 精品成人佐山爱一区二区| 成人久久久精品乱码一区二区三区| 亚洲人妖av一区二区| 精品视频1区2区| 国产成人免费在线视频| 亚洲欧美日韩在线| 日韩一区二区三免费高清| 国产福利91精品一区二区三区| 亚洲美腿欧美偷拍| 精品国内片67194| 欧美无砖专区一中文字| 国产一区在线精品| 亚洲电影一级黄| 国产精品伦一区二区三级视频| 欧美日韩欧美一区二区| 成人午夜电影久久影院| 丝袜a∨在线一区二区三区不卡| 久久久一区二区三区| 欧美亚洲国产一区在线观看网站| 久久99精品国产.久久久久| 亚洲女性喷水在线观看一区| 欧美成人激情免费网| 一本色道**综合亚洲精品蜜桃冫| 激情深爱一区二区| 丝袜美腿亚洲综合| 亚洲乱码国产乱码精品精98午夜 | 美女爽到高潮91| 亚洲精品成人悠悠色影视| 26uuu久久天堂性欧美| 欧美日韩一级二级| 色一区在线观看| 成人精品gif动图一区| 精品系列免费在线观看| 亚洲曰韩产成在线| 自拍偷拍国产精品| 国产午夜一区二区三区| 日韩欧美国产一区二区在线播放| 日本精品视频一区二区| 不卡电影免费在线播放一区| 国产一区二区电影| 免费人成在线不卡| 图片区日韩欧美亚洲| 亚洲宅男天堂在线观看无病毒| 亚洲视频每日更新| 国产精品欧美精品| 中文字幕成人在线观看| 中文字幕不卡的av| 中文字幕免费不卡在线| 国产日韩欧美高清在线| 国产亚洲一二三区| 国产视频一区在线播放| 国产日韩欧美综合一区| 亚洲国产精品v| 国产精品三级电影| 中文字幕一区二区三区在线播放| 久久久久亚洲综合| 日本一区二区成人| 中文字幕一区二区三中文字幕| 综合久久久久综合| 亚洲一区影音先锋| 日韩av在线发布| 免费精品视频最新在线| 久久99精品一区二区三区三区| 国产真实精品久久二三区| 国产精选一区二区三区| 国产91精品欧美| 一本大道综合伊人精品热热 | 2024国产精品| 国产调教视频一区| 亚洲欧美激情插| 天堂va蜜桃一区二区三区漫画版| 麻豆视频观看网址久久| 国产精品综合av一区二区国产馆| 成人小视频在线观看| 一本大道久久精品懂色aⅴ| 欧美亚洲一区二区在线| 日韩一区二区精品| 欧美国产乱子伦| 性欧美大战久久久久久久久| 蜜臀99久久精品久久久久久软件| 国产一区二区免费看| 91亚洲精品一区二区乱码| 欧美美女直播网站| 欧美激情中文不卡| 亚洲亚洲精品在线观看| 国产一区二区三区观看| 日本丶国产丶欧美色综合| 91精品福利在线一区二区三区| 国产精品美女久久久久aⅴ国产馆| 一级做a爱片久久| 精品在线你懂的| 在线一区二区三区| 26uuu欧美| 亚洲成人av中文| 国产不卡一区视频| 欧美高清hd18日本| 中文无字幕一区二区三区 | 制服丝袜国产精品| 国产精品蜜臀在线观看| 日韩av高清在线观看| 99国产精品99久久久久久| 日韩欧美一区二区三区在线| 亚洲久本草在线中文字幕| 国产一区二区女| 欧美一区二区三区不卡| 亚洲美腿欧美偷拍| 成人免费视频国产在线观看| 欧美日韩一区国产| 亚洲日本免费电影| 国产一区二区福利视频| 欧美一卡二卡三卡四卡| 亚洲综合色自拍一区| 99精品欧美一区二区三区小说| 精品国产伦一区二区三区免费 | 在线成人av网站| 亚洲激情图片小说视频| 国产黄色成人av| xf在线a精品一区二区视频网站| 日韩精品一级中文字幕精品视频免费观看| 成人激情av网| 国产欧美一区二区精品性色超碰 | 亚洲va欧美va国产va天堂影院| 成人午夜短视频| 国产校园另类小说区| 极品尤物av久久免费看| 欧美一区二区三区在线观看| 亚洲一区二区美女| 欧美综合色免费| 一区二区三区在线视频免费观看| 99久久综合国产精品| 国产女同互慰高潮91漫画| 国产剧情一区在线| 国产日韩欧美亚洲| 粉嫩欧美一区二区三区高清影视| 26uuu色噜噜精品一区| 国产一区中文字幕| 中日韩av电影| 99久久综合狠狠综合久久| 中文字幕亚洲成人|