Advertisement
Guest User

Untitled

a guest
Feb 21st, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <winsock2.h>
  5.  
  6. int main(int argc, char* argv[])
  7. {
  8. // Ellenőrzés
  9. if (argc < 5)
  10. {
  11. printf("Használat: %s IP port oldal fájl\n", argv[0]);
  12. return 1;
  13. }
  14.  
  15. // Winsock inicializálás
  16. WSADATA wsd;
  17. if (WSAStartup(0x0202, &wsd) != 0)
  18. {
  19. perror("WSAStartup");
  20. return 1;
  21. }
  22.  
  23. // Socket létrehozása
  24. SOCKET sock;
  25. if ((sock = socket(PF_INET, SOCK_STREAM, 0)) < 0)
  26. {
  27. perror("socket");
  28. return 1;
  29. }
  30.  
  31. // Cím összeállítása
  32. struct sockaddr_in addr;
  33. addr.sin_family = AF_INET;
  34. addr.sin_addr.s_addr = inet_addr(argv[1]);
  35. addr.sin_port = htons(atoi(argv[2]));
  36.  
  37. // Kapcsolódás
  38. if (connect(sock, (struct sockaddr*)&addr, sizeof(addr)) < 0)
  39. {
  40. perror("connect");
  41. return 1;
  42. }
  43.  
  44. // Kérés összeállítása és elküldése
  45. char request[256];
  46. int reqlen;
  47. reqlen = sprintf(request, "GET %s HTTP/1.0\r\n\r\n", argv[3]);
  48. send(sock, request, reqlen, 0);
  49.  
  50. // Válasz fogadása
  51. char received[1024];
  52. int recvlen;
  53. recvlen = recv(sock, received, sizeof(received) - 1, 0);
  54. if (recvlen > 0)
  55. {
  56. received[recvlen] = 0;
  57.  
  58. // Fejléc vizsgálata
  59. char version[16];
  60. int status;
  61. char error[256];
  62. if (sscanf(received, "HTTP/%16s %d %256[^\r\n]\r\n", version, &status, error) == 3)
  63. {
  64. printf("A szerver státusz jelzése: %d %s\n", status, error);
  65. printf("Adat mentése...\n");
  66.  
  67. // Fejléc végének megkeresése
  68. char* pdata;
  69. while ((pdata = strstr(received, "\r\n\r\n")) == NULL)
  70. {
  71. recvlen = recv(sock, received, sizeof(received), 0);
  72. }
  73. printf("\n%s\n\n", pdata + 4);
  74.  
  75. // Állomány megnyitása
  76. FILE* f;
  77. f = fopen(argv[4], "w");
  78. if (f == NULL)
  79. {
  80. perror("fopen");
  81. return 1;
  82. }
  83.  
  84. // Az adat elejének a kiírása
  85. fwrite(pdata + 4, 1, recvlen - (pdata - received) - 4, f);
  86.  
  87. // Olvasunk és írunk ki
  88. while ((recvlen = recv(sock, received, sizeof(received), 0)) > 0)
  89. {
  90. fwrite(received, 1, recvlen, f);
  91. }
  92.  
  93. // Lezárjuk az állományt
  94. fclose(f);
  95.  
  96. printf("Vége\n");
  97. }
  98. else
  99. {
  100. printf("Hibás válasz!\n");
  101. }
  102. }
  103.  
  104. closesocket(sock);
  105.  
  106. WSACleanup();
  107.  
  108. return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement