Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define ASIO_STANDALONE
- #define ASIO_HAS_STD_ADDRESSOF
- #define ASIO_HAS_STD_ARRAY
- #define ASIO_HAS_CSTDINT
- #define ASIO_HAS_STD_SHARED_PTR
- #define ASIO_HAS_STD_TYPE_TRAITS
- #include<asio.hpp>
- #include<vector>
- #include<thread>
- #include<string>
- #include<iostream>
- #include<iomanip>
- #include<chrono>
- #include<sstream>
- #include<random>
- #include<functional>
- #include<fstream>
- #include "Concurrent Queue.h"
- #include "Basic Server.h"
- int main()
- {
- server::basic_server server;
- server.start_listening("::1", "6118");
- volatile bool stop = false;
- auto then = std::chrono::system_clock::now();
- size_t bytes = 0;
- std::thread wait_for_exit([&stop]() {
- std::string line;
- std::getline(std::cin, line);
- stop = true;
- });
- while (!stop) {
- server::data_pair read_from_server;
- if (!server.read_from_queue(read_from_server)) {
- std::this_thread::yield();
- continue;
- }
- std::string id = read_from_server.first;
- server::data_vector & data = read_from_server.second;
- std::string line;
- line.insert(line.end(), data.begin(), data.end());
- std::fstream output(id + ".txt", std::ios::out | std::ios::binary | std::ios::app);
- output << line;
- output.flush();
- auto now = std::chrono::system_clock::now();
- bytes += data.size();
- if (now - then > std::chrono::milliseconds(100)) {
- std::cout << "Received " << bytes << " bytes." << std::endl;
- then += std::chrono::milliseconds(100);
- }
- }
- std::cout << "Received " << bytes << " bytes." << std::endl;
- std::cout << std::endl;
- wait_for_exit.join();
- system("pause");
- return 0;
- }
Add Comment
Please, Sign In to add comment