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

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

?? prg12_1.c

?? unix下的關(guān)于TCP/IP的應(yīng)用程序代碼.包括基于進(jìn)程和線程的代碼.
?? C
字號:
// File: prg12_1.c
 #include <iostream.h>
 #include <string.h>
 #include <errno.h>
 #include <signal.h>
 #include <stdlib.h>
 #include <arpa/inet.h>   /* inet_ntoa */
 #include <unistd.h>      /* close */
 #include <stdio.h>       /* Basic I/O routines          */
 #include <sys/types.h>   /* standard system types       */
 #include <netinet/in.h>  /* Internet address structures */
 #include <sys/socket.h>  /* socket interface functions  */
 #include <netdb.h>       /* host to IP resolution       */
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>  /* ICMP */
 #include <netinet/ip_icmp.h> /* ICMP */ 

 #define ICMPHEAD  8  // ICMP packet header's length
 #define MAXICMPLEN 200  

 /****************
 class: RawSock
 ******************/
 class RawSock
 {
 public:
 int sock;
 int error;
 RawSock(int protocol =0);
 virtual  ~RawSock();
 int send(const void* msg, int msglen,sockaddr* addr,unsigned int len);
 int send(const void* msg, int msglen,char* addr);
 int receive(void* buf,int buflen,sockaddr* from,int* len);
 int Error() {return error;}
 }; 

 class ICMP: public RawSock
 {
 public:
 struct icmp *packet;
 int max_len;
 int length;

 ushort_t checksum(ushort_t *addr,int len);
 ICMP();
 ICMP(int len);
 ~ICMP();
 int send_icmp(char *to, void* buf,int len);
 int recv_icmp(sockaddr* from);
 void setCode(int c) {  packet->icmp_code = c;}
 void setId(int i) { packet->icmp_id = i; }
 void setSeq(int s) { packet->icmp_seq = s;}
 void setType(int t) { packet->icmp_type = t;}
 };

 RawSock::RawSock(int protocol = 0) {
 sock = socket(AF_INET, SOCK_RAW,protocol);
 setuid(getuid());
 if (sock == -1) error= 1;
   else error = 0;
 }

 RawSock::~RawSock(){
 close(sock);
 }

 int RawSock::send(const void* msg,int msglen,sockaddr* to, unsigned int len) {
 if (error) return -1;
 int length = sendto(sock,msg,msglen,0,(const sockaddr*)to,len); 
 if (length == -1) {
   error = 2;
   return -1;
   }
 return length; 
 }

 int RawSock::send(const void* msg,int msglen,char* hostname) {
 sockaddr_in sin;        // Sock Internet address
 if (error) return -1;
 if(hostname) {
   hostent *hostnm = gethostbyname(hostname); 
   if(hostnm == (struct hostent *) 0) {
     return -1;
     }
   sin.sin_addr.s_addr = *((unsigned long *)hostnm->h_addr);
 }
 else   
   return -1; 
 sin.sin_family = AF_INET;

 return send(msg,msglen,(sockaddr *)&sin, sizeof(sin));
 }

 int RawSock::receive(void* buf,int buflen,sockaddr* from,int* len)
 {
 if (error) return -1;
 while (1) {
   int length = recvfrom(sock,buf,buflen,0,from,len); 
   if (length == -1) 
     if (errno == EINTR) continue;
   else {
     error = 3;
     return -1;
     }
   return length;
   }
 }

 /****************
 class: ICMP
 ******************/
 ICMP::ICMP():  RawSock(IPPROTO_ICMP)
 {
 max_len = MAXICMPLEN;
 packet = (icmp*) new char[max_len];

 packet->icmp_code = 0;
 packet->icmp_id = 0;
 packet->icmp_seq = 0;
 packet->icmp_type = ICMP_ECHO;
 }

 ICMP::ICMP(int len):  RawSock(IPPROTO_ICMP) 
 {
 max_len = len;
 packet = (icmp*) new char[max_len];

 packet->icmp_code = 0;
 packet->icmp_id = 0;
 packet->icmp_seq = 0;
 packet->icmp_type = ICMP_ECHO;
 }   

 ICMP::~ICMP()
 {
 delete[] (char*) packet;
 }

 ushort_t ICMP::checksum(ushort_t *addr,int len)
 {
 int nleft = len;
 int sum = 0;
 unsigned short *w = addr;
 unsigned short answer = 0;

 while (nleft > 1) {
   sum+=*w++;
   nleft -= 2;
   }

 if (nleft == 1) {
   *(unsigned char*) (&answer) = *(unsigned char*) w;
   sum += answer;
   }

 sum = (sum >> 16) + (sum & 0xffff);
 sum += (sum>>16);
 answer = ~sum;
 return (answer);
 }

 int ICMP::send_icmp(char *host, void* buf,int len)
 {  
 memcpy(packet->icmp_data,buf,len);
 packet->icmp_cksum = 0;
 packet->icmp_cksum = checksum((unsigned short *)packet, ICMPHEAD + 6);

 int err = send(packet,MAXICMPLEN,host);
 return err;
 }

 int ICMP::recv_icmp(sockaddr* from)
 {
 char buf[MAXICMPLEN + 100];
 int	hlen1, icmplen;
 struct ip	*ip;
 struct icmp  *icmp;

 if (Error()) return -1;
 int addrlen = 0;
 int len = receive(buf,MAXICMPLEN+100,from,&addrlen);

 if (len == -1) {
   cout << "Receiving Failed!\n" ;
   return -1;
   }

 ip = (struct ip *) buf;		/* start of IP header */
 hlen1 = ip->ip_hl << 2;		/* length of IP header */

 icmp = (struct icmp *) (buf + hlen1);	/* start of ICMP header */
 if ( (icmplen = len - hlen1) < 8){
   cout << "Receiving Failed!\n" ;
   return -1;
   }

 length = len - hlen1;
 memcpy(packet,icmp,length);
 return 0;
 }

 main(int argc, char *argv[])
 {
 ICMP icmp;
 sockaddr from;
 char *host;
 int count;

 if (argc < 2) {       
   printf("Usage: %s <IP Address> <try_number>\n",argv[0]); 
   exit(1); 
   } 
 if (argc == 2) {
   host = argv[1];
   count = 5;
   }
 if (argc == 3) {
   host = argv[1];
   count = atoi(argv[2]);
   }

 for (int i = 0; i <= count; i++) {
   icmp.setId(getpid());
   icmp.setSeq(i);
   char* test_data= "abcde";
   icmp.send_icmp(host,test_data,strlen(test_data));
   }
 int num = 1;
 while(1) {
   if (icmp.recv_icmp(&from) < 0) continue;
   if (icmp.packet->icmp_type == ICMP_ECHOREPLY) {
     if (icmp.packet->icmp_id == getpid()) {
       printf("%d bytes from %s: seq=%u, data=%s\n",
         icmp.length, host,icmp.packet->icmp_seq, icmp.packet->icmp_data);
       num ++;
       if (num > count) break;
       }
     }  
  }
 }


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
舔着乳尖日韩一区| 91精品午夜视频| 国产精品三级久久久久三级| 国产在线播放一区二区三区| 久久久五月婷婷| 国产不卡高清在线观看视频| 欧美—级在线免费片| av亚洲精华国产精华| 亚洲色欲色欲www| 欧美另类z0zxhd电影| 日韩1区2区3区| 国产欧美一区二区精品秋霞影院 | gogogo免费视频观看亚洲一| 国产欧美日韩综合精品一区二区 | 国产欧美日韩一区二区三区在线观看| 国产suv一区二区三区88区| 综合久久久久综合| 欧美久久久久久久久久| 国产美女娇喘av呻吟久久| 亚洲丝袜自拍清纯另类| 欧美精品久久99| 丰满少妇久久久久久久| 亚洲国产精品麻豆| 久久蜜桃av一区精品变态类天堂 | 日本道色综合久久| 美女被吸乳得到大胸91| 国产精品久久久久久户外露出| 99在线精品免费| 日本特黄久久久高潮| 国产精品网站在线播放| 欧美性猛交一区二区三区精品 | 韩国成人福利片在线播放| 中文字幕在线不卡一区二区三区| 欧美午夜精品久久久久久孕妇 | 久久综合中文字幕| 91福利视频网站| 国产一区二区网址| 天天综合网天天综合色| 久久精品欧美日韩精品| 在线亚洲欧美专区二区| 国产精品中文字幕日韩精品| 亚洲一区日韩精品中文字幕| 精品国产三级a在线观看| 欧美午夜寂寞影院| 北条麻妃国产九九精品视频| 免费久久精品视频| 亚洲自拍偷拍网站| 国产精品欧美一区二区三区| 日韩视频在线你懂得| 在线观看精品一区| 99视频有精品| 国产精品一区不卡| 久久99精品久久久久久动态图| 伊人开心综合网| 国产日本一区二区| 精品国产成人在线影院 | 首页欧美精品中文字幕| 一区在线播放视频| 久久蜜桃av一区二区天堂| 日韩亚洲欧美成人一区| 欧美色电影在线| 色素色在线综合| 91丨国产丨九色丨pron| www.亚洲人| 成人黄色网址在线观看| 国产福利视频一区二区三区| 久久99九九99精品| 日韩精品欧美精品| 日韩专区一卡二卡| 天天免费综合色| 亚洲成av人影院| 五月天亚洲婷婷| 亚洲成a人片综合在线| 亚洲香肠在线观看| 亚洲一二三区视频在线观看| 亚洲在线一区二区三区| ㊣最新国产の精品bt伙计久久| 国产精品美女久久久久久久久 | 免费黄网站欧美| 日本欧美在线看| 久草精品在线观看| 激情综合网av| 国产精品66部| 成人app网站| 欧美在线你懂得| 欧美在线视频全部完| 欧美日韩精品一区二区三区四区| 欧美日韩美女一区二区| 91精品免费在线| 精品国产乱码91久久久久久网站| 精品99久久久久久| 国产精品理伦片| 亚洲免费av观看| 亚洲成人中文在线| 蜜臀精品一区二区三区在线观看| 蜜桃视频在线一区| 国产ts人妖一区二区| 91麻豆自制传媒国产之光| 欧美视频一区二区三区在线观看| 这里只有精品99re| 久久精品人人做人人爽97| 国产精品不卡一区二区三区| 亚洲一区二区三区精品在线| 日本亚洲欧美天堂免费| 国产成人综合网站| 日本精品一级二级| 日韩视频一区二区三区| 亚洲国产精品99久久久久久久久 | 久久新电视剧免费观看| 国产精品免费人成网站| 夜夜嗨av一区二区三区网页| 人禽交欧美网站| 国产精华液一区二区三区| 色综合av在线| 精品三级av在线| 亚洲欧美欧美一区二区三区| 日本不卡不码高清免费观看| 国产成人免费av在线| 欧美日韩不卡一区| 欧美国产欧美综合| 亚洲一区二区黄色| 国产成人午夜片在线观看高清观看| 色婷婷一区二区| 久久综合中文字幕| 亚洲mv在线观看| 丁香婷婷综合网| 91精品国产色综合久久不卡电影| 国产亚洲成aⅴ人片在线观看| 亚洲综合男人的天堂| 国产一区激情在线| 欧美日韩dvd在线观看| 国产精品美女一区二区| 激情五月播播久久久精品| 91成人国产精品| 国产精品视频观看| 精品一区二区三区久久| 91精品国产欧美一区二区18| 国产日韩欧美高清| 麻豆精品视频在线观看免费| 欧美性受xxxx黑人xyx| 国产精品乱码一区二区三区软件 | 亚洲精品欧美激情| 粉嫩一区二区三区在线看| 日韩午夜电影av| 亚洲成人精品一区二区| 99视频一区二区三区| 欧美激情一区二区三区全黄| 免费人成黄页网站在线一区二区| 色狠狠色狠狠综合| 国产精品成人免费精品自在线观看| 久久爱另类一区二区小说| 欧美精品自拍偷拍动漫精品| 亚洲精品视频在线看| 不卡电影一区二区三区| 国产婷婷一区二区| 韩国v欧美v亚洲v日本v| 日韩一区二区三区视频在线 | 国产日韩精品一区二区三区| 免费av成人在线| 欧美日本不卡视频| 亚洲福利电影网| 欧美性xxxxx极品少妇| 一区二区三区资源| 色综合久久久久久久久久久| 国产精品久久久久久久久免费樱桃| 国产真实乱对白精彩久久| 欧美岛国在线观看| 久久99国产精品尤物| 日韩精品中文字幕一区二区三区| 日韩av午夜在线观看| 日韩一区二区中文字幕| 美女视频黄久久| 欧美va亚洲va| 韩国成人精品a∨在线观看| 久久久久久久久久久99999| 国产一区二区影院| 日本一区二区三区国色天香 | 91网站在线观看视频| 中文字幕一区二区三区在线不卡| 99久久精品国产网站| 亚洲精品高清在线观看| 在线精品亚洲一区二区不卡| 亚洲高清一区二区三区| 91麻豆精品国产91久久久| 久久精品国产在热久久| 欧美精品一区二区精品网| 国产成人免费av在线| 亚洲天堂精品视频| 欧美日韩一区小说| 另类小说一区二区三区| 久久综合九色综合久久久精品综合| 国产麻豆精品一区二区| 日韩理论电影院| 欧美日韩综合在线免费观看| 毛片不卡一区二区| 亚洲欧洲性图库| 欧美亚洲综合色| 久久激情五月婷婷| 中文字幕在线一区免费| 欧美日韩中文另类|