Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _WINSOCK_DEPRECATED_NO_WARNINGS
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdlib.h>
- #include <stdio.h>
- #include <iostream>
- #include <string.h>
- #include <winsock2.h>
- int main(int argc, char* argv[])
- {
- // Ellenőrzés
- if (argc < 5)
- {
- printf("Hasznalat: %s IP port oldal fajl\n", argv[0]);
- return 1;
- }
- // Winsock inicializálás
- WSADATA wsd;
- if (WSAStartup(0x0202, &wsd) != 0)
- {
- printf("WSAStartup: %d", WSAGetLastError());
- return 1;
- }
- SOCKET s;
- if ((s = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
- std::cout << "creating socket:" << WSAGetLastError();
- return 1;
- }
- struct sockaddr_in addr;
- addr.sin_family = AF_INET; //ip4
- addr.sin_addr.s_addr = inet_addr(argv[1]); // ip cimet kap eloszor
- addr.sin_port = htons(atoi(argv[2])); //portszamot kap masodszor
- if (connect(s, (struct sockaddr*) & addr, sizeof(addr)) < 0) {
- std::cout <<"connect:"<< WSAGetLastError();
- return 1;
- }
- //3-as feladat
- char request[256];
- int rlen = sprintf(request, "GET %s HTTP/1.0\r\n\r\n", argv[3]);
- send(s, request, rlen, 0);
- char recved[1024];
- int recvlen = recv(s, recved, sizeof(recved)-1, MSG_WAITALL );
- if (recved < 0)
- {
- std::cout << "recived:" << WSAGetLastError();
- return 1;
- }
- recved[recvlen] = 0;
- std::cout << recved;
- char version[16];
- int status;
- char error[256];
- if (sscanf(recved, "HTTP/%16s %d %256[^\r\n\r\n]", version, &status, error) == 3){
- std::cout <<"\n\n" << status << "\t" << error;
- }
- char* pdata;
- if ((pdata = strstr(recved, "\r\n\r\n")) == NULL) {
- std::cout << "EOF hiba";
- }
- FILE *fp;
- if ((fp = fopen(argv[4], "w")) != NULL)
- {
- fwrite(pdata + 4, 1,recvlen - (pdata - recved) - 4, fp);
- }
- else {
- std::cout << "fopen error";
- }
- while (recvlen = recv(s, recved, sizeof(recved), 0) > 0) {
- fwrite(recved, 1, recvlen, fp);
- }
- fclose(fp);
- closesocket(s);
- WSACleanup();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement