亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1464 | 回復(fù): 0
打印 上一主題 下一主題

用RAW寫的ping程序,出問題了。。。。 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-08-15 21:19 |只看該作者 |倒序?yàn)g覽
  1. #include <stdio.h>
  2. #include <netinet/ip.h>
  3. #include <netinet/tcp.h>
  4. #include <netinet/in.h>
  5. #include <netinet/ip_icmp.h>
  6. #include <arpa/inet.h>
  7. #include <sys/socket.h>
  8. #include <stdlib.h>
  9. #define oops(msg){perror(msg);exit(0);}
  10. unsigned short icmpcheck(unsigned short *,int );
  11. int main(int ac,char**av)
  12. {
  13.     int sockfd=0;
  14.     if((sockfd=socket(AF_INET,SOCK_RAW,htons(IPPROTO_ICMP)))<0)
  15.         oops("socket");
  16. //   int val=1;
  17. //    if((setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,&val,sizeof(val)))<0)
  18. //        oops("setsocket");
  19.     unsigned char buff[1024]={0};
  20.    // int ip_len=sizeof(struct ip)+sizeof(struct icmphdr);

  21. //    struct ip *ip;
  22.    /* ip=(struct ip*)buff;
  23.     ip->ip_hl=5;
  24.     ip->ip_v=4;
  25.     ip->ip_tos=0;
  26.     ip->ip_len=htons(ip_len);
  27.     ip->ip_id=0;
  28.     ip->ip_off=0;
  29.     ip->ip_ttl=255;
  30.     ip->ip_p=IPPROTO_ICMP;
  31.     ip->ip_sum=0;
  32.     inet_aton("192.168.1.102",&ip->ip_src); //本地ip
  33.     inet_aton(av[1],&ip->ip_dst);// 請求ip */

  34.     struct icmphdr *icmp;
  35.     icmp=(struct icmphdr*)(buff);
  36.     icmp->type=8;
  37.     icmp->code=0;
  38.     icmp->checksum=0;
  39.     icmp->un.echo.sequence=1; //隨機(jī)定義的,下面id也是
  40.     icmp->un.echo.id=1;
  41.     int nbytes=0;

  42.     struct sockaddr_in sa;
  43.     sa.sin_family=AF_INET;
  44.     inet_aton(av[1],&sa.sin_addr);

  45.     int icmp_len=sizeof(struct icmphdr);

  46.     while(1)
  47.    {
  48.         icmp->checksum=icmpcheck((unsigned short*)icmp,sizeof(struct icmphdr));
  49.         nbytes=sendto(sockfd,buff,icmp_len,0,(struct sockaddr*)&sa,sizeof(sa));
  50.         printf("nbytes is %d\n",nbytes);
  51.         sleep(1);
  52.     }
  53.     close(sockfd);
  54.     return 0;
  55. }

  56. unsigned short icmpcheck(unsigned short *icmp,int len)
  57. {
  58.     unsigned long sum=0;
  59.     while(len>1)
  60.     {
  61.         sum=*icmp++;
  62.         len-=2;
  63.     }
  64.     if(len)
  65.         sum=*icmp++;
  66.     while(sum>>16)
  67.         sum=(sum>>16)+(sum&0xffff);
  68.     return (unsigned short)~sum;
  69. }













復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP