Advertisement
Guest User

Untitled

a guest
Aug 25th, 2013
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1.     struct sockaddr_in myAddr;
  2.     struct sockaddr_in remoteAddr;
  3.    
  4.     int socketConn;
  5.     int addrLen = sizeof( struct sockaddr );
  6.  
  7.     // Create socket to the external proxy server
  8.     remoteAddr.sin_family = PF_INET;
  9.     remoteAddr.sin_port = htons( PORT );
  10.     remoteAddr.sin_addr.s_addr = inet_addr( "xx.xx.xx.xx" );
  11.     memset( &(remoteAddr.sin_zero), '\0', 8);
  12.  
  13.     if(( socketConn = socket( PF_INET, SOCK_DGRAM, 0 ) ) == - 1 )
  14.     {
  15.         printf("Cannot ressocket: (%d)\n", WSAGetLastError());
  16.         exit( 1 );
  17.     }
  18.  
  19.     int numbytes;
  20.     int bufferLen = 3;
  21.     char buffer[bufferLen];
  22.     char rcvbuffer[MAXBUFLEN];
  23.    
  24.     BYTE version = 0x05;
  25.     BYTE authlen = 0x01;
  26.     BYTE auth = 0x00;
  27.     memcpy(buffer+0, &version, 1);
  28.     memcpy(buffer+1, &authlen, 1);
  29.     memcpy(buffer+2, &auth, 1);
  30.  
  31.     // Handshake
  32.     numbytes = sendto( socketConn, buffer, bufferLen, 0, ( struct sockaddr * ) & remoteAddr, sizeof( struct sockaddr ) );
  33.     if( numbytes == -1 )
  34.     {
  35.         printf("Cannot send: (%d)\n", WSAGetLastError());
  36.         exit( 1 );
  37.     }
  38.  
  39.     printf( "SentLen: %d bytes\n", numbytes );
  40.  
  41.    
  42.     // Receive data from the proxy server
  43.     myAddr.sin_family = PF_INET;
  44.     myAddr.sin_port = htons( PORT );
  45.     myAddr.sin_addr.s_addr = inet_addr( "0.0.0.0" );
  46.     memset( &(myAddr.sin_zero), '\0', 8);
  47.  
  48.     if(( socketConn = socket( PF_INET, SOCK_DGRAM, 0 ) ) == - 1 ) {
  49.         printf("Cannot ressocket: (%d)\n", WSAGetLastError());
  50.         exit( 1 );
  51.     }
  52.  
  53.     int myBind = bind( socketConn, ( struct sockaddr * ) &myAddr, addrLen );
  54.     if( myBind == -1 )
  55.     {
  56.         printf("Cannot bind: (%d)\n", WSAGetLastError());
  57.         exit(1);
  58.     }
  59.  
  60.     numbytes = recvfrom( socketConn, rcvbuffer, MAXBUFLEN - 1, 0,
  61.                             ( struct sockaddr * ) &remoteAddr, & addrLen );
  62.  
  63.     if( numbytes == -1 )
  64.     {
  65.         printf("Cannot listen: (%d)\n", WSAGetLastError());
  66.         exit( 1 );
  67.     }
  68.  
  69.     printf( "recv: %s\n", inet_ntoa( myAddr.sin_addr ) );
  70.     printf( "len: %d bytes\n", numbytes );
  71.     rcvbuffer[ numbytes ] = '\0';
  72.     for (int i = 0; i < numbytes; i++)
  73.     {
  74.         printf( "0x%02X ", (int)rcvbuffer[i] );
  75.     }
  76.  
  77.     printf( "\n" );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement