Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 12
1

Многопоточный загрузчик файлов по ссылкам в txt файле

07.12.2018, 15:44. Показов 1904. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Не могу понять как реализовать многопоточный загрузчик файлов(картинки) по ссылкам с txt файла.
Например есть 5 картинок, ссылки на эти картинке лежат в txt файле. Нужно чтобы программа скачала эти картинки путём многопоточности.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.12.2018, 15:44
Ответы с готовыми решениями:

Как реализовать многопоточный поиск определенного слова по ссылкам на сайты?
Подскажите как реализовать многопоточный поиск по ссылкам определенного слова? Так понимаю надо...

Копирование файлов, указанных в .txt-файле
Имеется программа: считываются 2 директории (допустим "a" и "b"). В директории "a" не хватает...

Переписать компоненты файла 1.txt в файл 3.txt так, чтобы в файле 3.txt числа шли в определенном порядке
Дан файл 1.txt, компоненты которого являются целыми числами.Файл 1.txt содержит столько же...

Создать новый файл qa.txt, который будет содержать строки с вопросами и ответами из файлов q.txt и a.txt.
В текстовом редакторе создать два текстовых файла q.txt и a.txt, которые соответственно содержат...

5
 Аватар для alkl
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
07.12.2018, 15:51 2
А что конкретно не понятно, как загружать файлы, или как сделать отдельный поток ?
Или как файл прочитать ?
0
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 12
07.12.2018, 15:52  [ТС] 3
Если честно, то все не понятно.
0
 Аватар для alkl
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
07.12.2018, 16:02 4
c++ чтение файла по строкам
c++ загрузка файла из интернета
c++ потоки
Поверьте, всё это есть в интернете и разжёвано до некуда ...

Добавлено через 1 минуту
Даже по каждому запросу есть ссылки на этот форум.
Не ленитесь, пробуйте. Будут вопросы - обращайтесь.
0
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 12
07.12.2018, 16:20  [ТС] 5
Спасибо

Добавлено через 14 минут
Ребят, если не сложно можно код проги?
0
 Аватар для igorrr37
2863 / 2011 / 988
Регистрация: 21.12.2010
Сообщений: 3,716
Записей в блоге: 15
07.12.2018, 20:14 6
Лучший ответ Сообщение было отмечено crymory как решение

Решение

Через boost::beast можно закачать. Пример взят из экзамплов к beast и немного переделан. Закачивает текст лицензии с сайта boost
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include "C:\boost_1_68_0_VS2017\libs\beast\example\common\root_certificates.hpp"
 
#include <boost/beast/core.hpp>
#include <boost/beast/http.hpp>
#include <boost/beast/version.hpp>
#include <boost/asio/connect.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/ssl/error.hpp>
#include <boost/asio/ssl/stream.hpp>
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
 
using tcp = boost::asio::ip::tcp;       // from <boost/asio/ip/tcp.hpp>
namespace ssl = boost::asio::ssl;       // from <boost/asio/ssl.hpp>
namespace http = boost::beast::http;    // from <boost/beast/http.hpp>
 
// Performs an HTTP GET and prints the response
int main(int argc, char** argv)
{
    try
    {
        // Check command line arguments.
        if (argc != 4 && argc != 5)
        {
            std::cerr <<
                "Usage: http-client-sync-ssl <host> <port> <target> [<HTTP version: 1.0 or 1.1(default)>]\n" <<
                "Example:\n" <<
                "    http-client-sync-ssl www.example.com 443 /\n" <<
                "    http-client-sync-ssl www.example.com 443 / 1.0\n";
            //return EXIT_FAILURE;
        }
        auto const host = "www.boost.org";
        auto const port = "443";
        auto const target = "/LICENSE_1_0.txt";
        int version = argc == 5 && !std::strcmp("1.0", argv[4]) ? 10 : 11;
 
        // The io_context is required for all I/O
        boost::asio::io_context ioc;
 
        // The SSL context is required, and holds certificates
        ssl::context ctx{ ssl::context::sslv23_client };
 
        // This holds the root certificate used for verification
        load_root_certificates(ctx);
 
        // These objects perform our I/O
        tcp::resolver resolver{ ioc };
        ssl::stream<tcp::socket> stream{ ioc, ctx };
 
        // Set SNI Hostname (many hosts need this to handshake successfully)
        if (!SSL_set_tlsext_host_name(stream.native_handle(), host))
        {
            boost::system::error_code ec{ static_cast<int>(::ERR_get_error()), boost::asio::error::get_ssl_category() };
            throw boost::system::system_error{ ec };
        }
 
        // Look up the domain name
        auto const results = resolver.resolve(host, port);
 
        // Make the connection on the IP address we get from a lookup
        boost::asio::connect(stream.next_layer(), results.begin(), results.end());
 
        // Perform the SSL handshake
        stream.handshake(ssl::stream_base::client);
 
        // Set up an HTTP GET request message
        http::request<http::string_body> req{ http::verb::get, target, version };
        req.set(http::field::host, host);
        req.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);
 
        // Send the HTTP request to the remote host
        http::write(stream, req);
 
        // This buffer is used for reading and must be persisted
        boost::beast::flat_buffer buffer;
 
        // Declare a container to hold the response
        http::response<http::dynamic_body> res;
 
        // Receive the HTTP response
        http::read(stream, buffer, res);
 
        std::ofstream ofs{"out.txt"};
        ofs << res;
        ofs.close();
 
        // Write the message to standard out
        //std::cout << res << std::endl;
 
        // Gracefully close the stream
        boost::system::error_code ec;
        stream.shutdown(ec);
        if (ec == boost::asio::error::eof)
        {
            // Rationale:
            // http://stackoverflow.com/questions/25587403/boost-asio-ssl-async-shutdown-always-finishes-with-an-error
            ec.assign(0, ec.category());
        }
        if (ec)
            throw boost::system::system_error{ ec };
 
        // If we get here then the connection is closed gracefully
    }
    catch (std::exception const& e)
    {
        std::cerr << "Error: " << e.what() << std::endl;
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}
0
07.12.2018, 20:14
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2018, 20:14
Помогаю со студенческими работами здесь

Удалить в текстовом файле 1.txt все строки, которые встречаются в текстовом файле 2.txt
например имеется текстовый файл 1.txt c таким содержанием 111 222 333 444 555 и имеется...

Переписать все числа из файлов 1.txt и 2.txt в файл 3.txt
Здравствуйте! Нужна помощь. Есть два текстовых файла 1.txt и 2.txt в них есть числа....

Многопоточный поиск строки в файле
как создать функцию? необходимо в файле вида 5255 3333 5555 6565 2222 найти строку 2222?...

Поиск в тексте DOC-файлов последовательностей символов по шаблону и поиск найденных в TXT-файле (с логом)
Уважаемые программисты! Очень нужен bat-файл или скрипт, который решает такую задачу: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru