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)
- {
- printf("WSAStartup: %d", WSAGetLastError());
- return 1;
- }
- // socket létrehozása
- SOCKET sock;
- if ((sock = socket(PF_INET, SOCK_STREAM, 0)) < 0)
- {
- printf("socket error: %d\r\n", WSAGetLastError());
- return 1;
- }
- // Szerver címének ö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 a szerverhez
- if (connect(sock, (struct sockaddr*)&addr, sizeof(addr)) < 0)
- {
- printf("connect error: %d\r\n", WSAGetLastError());
- return 1;
- }
- //HTTP kérés küldése a szervernek
- 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, MSG_WAITALL);
- received[recvlen] = '\0';
- if (recvlen < 0)
- {
- printf("receive error: %d\r\n", WSAGetLastError());
- return 1;
- }
- printf("A szerver válasza: %s\r\n", received);
- //szerver válaszának feldolgozása
- 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);
- }
- // megkeressük a fejléc végét
- char* pdata;
- if ((pdata=strstr(received, "\r\n\r\n"))==NULL)
- {
- printf("Hiba");
- return 1;
- }
- // fájl megnyitása
- FILE* f;
- f = fopen(argv[4], "w");
- if (f == NULL)
- {
- perror("fopen");
- return 1;
- }
- //adat fájlba írása
- fwrite(pdata + 4, 1, recvlen - (pdata - received) - 4, f);
- //további adatok fogadása
- while ((recvlen=recv(sock, received, sizeof(received),0))>0)
- {
- fwrite(received, 1, recvlen, f);
- }
- fclose(f);
- //cleanup
- closesocket(sock);
- WSACleanup();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement