⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dns.txt

📁 dns 的 ppt dns 的 ppt dns 的 ppt dns 的 ppt dns 的 ppt dns 的 ppt dns 的 ppt dns 的 ppt
💻 TXT
字号:
一个代理服务器,填充协议包的例子,可作为参考 :   
  #include   <stdio.h>   
  #include   <sys/types.h>   
  #include   <sys/socket.h>   
  #include   <netinet/in.h>   
    
    
  #define   PROXY_IP   "xxx.xxx.xxx.xxx"   
  #define   PROXY_PORT   1080   
    
  #define   DEST_IP   "xxx.xxx.xxx.xxx"   
  #define   DEST_PORT   8888   
    
  #define   LOCAL_IP   "xxx.xxx.xxx.xxx"   
  #define   LOCAL_PORT   6666   
    
  int   main()   
  {           
          int   fd,   fd_udp;           
          struct   sockaddr_in   name;     
          //WSADATA   wsaData;           
          char   buf[100];           
          int   len;   
          int   i;   
          //if(WSAStartup(MAKEWORD(   2,   2   ),   &wsaData   ))                   
                //   return   1;     
          if((fd_udp   =   socket(AF_INET,   SOCK_DGRAM,   0))   ==   -1)                   
              return   1;           
          if((fd   =   socket(AF_INET,   SOCK_STREAM,   0))   ==   -1)                   
              return   1;           
          memset(&name,   0,   sizeof(name));           
          name.sin_family   =   AF_INET;           
          name.sin_addr.s_addr   =   inet_addr(PROXY_IP);           
          name.sin_port   =   htons(PROXY_PORT);           
          if(connect(fd,   (struct   sockaddr*)&name,   sizeof(name))   !=   0)                   
                  return   1;           
          buf[0]   =   5;           
          buf[1]   =   1;           
          buf[2]   =   0;           
          send(fd,   buf,   3,   0);           
          recv(fd,   buf,   2,   0);           
          if(buf[0]   !=   5   ||   buf[1]   !=   0)                   
                  return   1;   
          buf[0]   =   5;   /*   protocol   version   */       
          buf[1]   =   3;   /*   command   UDP   associate   */           
          buf[2]   =   0;   /*   reserved   */           
          buf[3]   =   1;   /*   address   type   IP   v4   */           
          len   =   sizeof(name);     
          memset(&name,   0,   sizeof(name));   
          name.sin_family   =   AF_INET;           
          name.sin_addr.s_addr   =   inet_addr(LOCAL_IP);           
          name.sin_port   =   htons(LOCAL_PORT);   
          bind(fd_udp,(struct   sockaddr   *)&name,len);   
          *(unsigned   int*)&buf[4]   =   inet_addr(LOCAL_IP);//name.sin_addr.s_addr;           
          *(unsigned   short*)&buf[8]   =   htons(LOCAL_PORT);           
          send(fd,   buf,   10,   0);           
          recv(fd,   buf,   10,   0);           
          if(buf[0]   !=   5)                   
              return   11;           
          memset(&name,   0,   sizeof(name));           
          name.sin_family   =   AF_INET;           
          name.sin_addr.s_addr   =   *(int*)&buf[4];           
          name.sin_port   =   (*(short*)&buf[8]);           
          connect(fd_udp,   (struct   sockaddr   *)&name,   sizeof(name));           
          for(i   =   0;   i   <100;   i++)   
          {   
                  buf[0]   =   0;   /*   reserved   */                   
                  buf[1]   =   0;   /*   reserved   */   
                  buf[2]   =   0;   /*   standalone   packet   */                   
                  buf[3]   =   1;   /*   address   type   IP   v4   */                   
                  *(unsigned   long*)&buf[4]   =   inet_addr(DEST_IP);                   
                  *(unsigned   short*)&buf[8]   =   htons(DEST_PORT);                   
                  *(unsigned   int*)&buf[10]   =   i;                   
                  send(fd_udp,   buf,   14,   0);                   
                  recv(fd_udp,   buf,   14,   0);                   
                  printf("udp   received:   %d\n",   *(int*)&buf[10]);           
          }           
          //closesocket(fd_udp);           
          //closesocket(fd);           
          //WSACleanup();           
          return   0;     
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -