Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <winsock2.h>
- int main(int argc, char* argv[])
- {
- // Ellenőrzés
- if (argc < 5)
- {
- printf("Használat: %s IP port oldal fájl\n", argv[0]);
- return 1;
- }
- // Winsock inicializálás
- WSADATA wsd;
- if (WSAStartup(0x0202, &wsd) != 0)
- {
- perror("WSAStartup");
- return 1;
- }
- // Socket létrehozása
- SOCKET sock;
- if ((sock = socket(PF_INET, SOCK_STREAM, 0)) < 0)
- {
- perror("socket");
- return 1;
- }
- // Cím összeállítása
- struct sockaddr_in addr;
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = inet_addr(argv[1]);
- addr.sin_port = htons(atoi(argv[2]));
- // Kapcsolódás
- if (connect(sock, (struct sockaddr*)&addr, sizeof(addr)) < 0)
- {
- perror("connect");
- return 1;
- }
- // Kérés összeállítása és elküldése
- char request[256];
- int reqlen;
- reqlen = sprintf(request, "GET %s HTTP/1.0\r\n\r\n", argv[3]);
- send(sock, request, reqlen, 0);
- // Válasz fogadása
- char received[1024];
- int recvlen;
- recvlen = recv(sock, received, sizeof(received) - 1, 0);
- if (recvlen > 0)
- {
- received[recvlen] = 0;
- // Fejléc vizsgálata
- char version[16];
- int status;
- char error[256];
- if (sscanf(received, "HTTP/%16s %d %256[^\r\n]\r\n", version, &status, error) == 3)
- {
- printf("A szerver státusz jelzése: %d %s\n", status, error);
- printf("Adat mentése...\n");
- // Fejléc végének megkeresése
- char* pdata;
- while ((pdata = strstr(received, "\r\n\r\n")) == NULL)
- {
- recvlen = recv(sock, received, sizeof(received), 0);
- }
- printf("\n%s\n\n", pdata + 4);
- // Állomány megnyitása
- FILE* f;
- f = fopen(argv[4], "w");
- if (f == NULL)
- {
- perror("fopen");
- return 1;
- }
- // Az adat elejének a kiírása
- fwrite(pdata + 4, 1, recvlen - (pdata - received) - 4, f);
- // Olvasunk és írunk ki
- while ((recvlen = recv(sock, received, sizeof(received), 0)) > 0)
- {
- fwrite(received, 1, recvlen, f);
- }
- // Lezárjuk az állományt
- fclose(f);
- printf("Vége\n");
- }
- else
- {
- printf("Hibás válasz!\n");
- }
- }
- closesocket(sock);
- WSACleanup();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement