Advertisement
Golden_Rus

Function GET HTTP for C

Aug 4th, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.98 KB | None | 0 0
  1. void get(char req)
  2. {
  3.      char sendbuffer[2048];
  4.  
  5.     // Формируем GET-пакет:  
  6.     strcpy(sendbuffer, "GET http://185.39.150.164/nick.php?PHPfunc=Client&Client="+req);      
  7.     strcat(sendbuffer, " HTTP/1.0\r\n");   
  8.     strcat(sendbuffer, "User-Agent: Opera\r\n");
  9.     strcat(sendbuffer, "Host: localhost\r\n");
  10.           //strcat(sendbuffer, "Connection: keep-alive\r\n");
  11.           //strcat(sendbuffer, "Keep-alive: 3000\r\n");
  12.            strcat(sendbuffer, "Connection: close");
  13.     strcat(sendbuffer, "\r\n\r\n");
  14.  
  15.  
  16.  
  17.     // socket
  18.     WSADATA wsaData;
  19.     SOCKET socketfd;
  20.     struct sockaddr_in server_addr;
  21.     struct hostent *h;
  22.     char response[1024*5]; // буффер под ответ
  23.  
  24.  
  25.  
  26.    // Шаг 1 инициализация библиотеки Winsock
  27.     if(WSAStartup(MAKEWORD(2,2),&wsaData))
  28.     {
  29.         fprintf(stderr,"\nError intializing winsock library!");
  30.        
  31.     }
  32.  
  33.  
  34. for(int j=1; j<3; j++)
  35. {
  36.  
  37.     // Шаг 2 создание сокета
  38.     socketfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  39.     if (socketfd < 0)
  40.     {
  41.         printf("Socket() error %d\n",WSAGetLastError());
  42.        
  43.     }
  44.  
  45.     server_addr.sin_family=AF_INET;
  46.     server_addr.sin_port=htons(PORT);
  47.  
  48.        
  49.     // преобразование IP адреса из символьного в сетевой формат
  50.     if (inet_addr(SERVER)!=INADDR_NONE)
  51.         server_addr.sin_addr.S_un.S_addr=inet_addr(SERVER);
  52.     else
  53.     // попытка получить IP адрес по доменному имени сервера
  54.     if (h=gethostbyname(SERVER))
  55.     ((unsigned long *)&server_addr.sin_addr)[0]=((unsigned long **)h->h_addr_list)[0][0];
  56.     else
  57.     {
  58.         printf("Invalid address %s\n",SERVER);
  59.         closesocket(socketfd);
  60.         WSACleanup();
  61.        
  62.     }
  63.  
  64.  
  65.     // адрес сервера получен – пытаемся установить соединение
  66.     if (connect(socketfd,(const struct sockaddr*)&server_addr,sizeof(struct sockaddr)))
  67.     {
  68.         printf("Connect error %d\n",WSAGetLastError());
  69.        
  70.     }
  71.  
  72.  
  73.  
  74.     // отправка get-запроса
  75.     send(socketfd, sendbuffer, strlen(sendbuffer),0);
  76.  
  77.          
  78. }
  79.  
  80.  
  81.     WSACleanup();
  82.  
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement