Advertisement
AlexNovoross87

serial

Jun 2nd, 2025
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. читаю данные с сокета
  2. std::optional<std::string> GetTaskFromSocket(tcp::socket &socket)
  3. {
  4.  
  5. net::streambuf buffer;
  6. boost::system::error_code ec;
  7. auto sym_read = net::read_until(socket, buffer, '\0', ec);
  8. if (buffer.size() == 0)
  9. {
  10. return std::nullopt;
  11. }
  12. const char *data = boost::asio::buffer_cast<const char *>(buffer.data());
  13. std::size_t size = buffer.size();
  14. return std::string(data, size);
  15. }
  16.  
  17. //Обработка сессии
  18. void HandleSession(tcp::socket socket)
  19. {
  20.  
  21. std::vector<task> actions;
  22. while (auto action = Service::GetTaskFromSocket(socket))
  23. {
  24. std::cout << "->BEGIN___________________________________________<-\n";
  25. std::cout << "->" << *action << "<-\n";
  26. std::cout << "->END___________________________________________<-\n";
  27. }
  28. };
  29.  
  30. ///@brief Сериализатор Unordered_Map
  31. template <typename T1, typename T2>
  32. std::string SerializeUmap(std::unordered_map<T1, T2> object)
  33. {
  34. std::ostringstream strm;
  35. boost::archive::text_oarchive arch(strm);
  36. arch << object;
  37. strm << '\0';
  38. return strm.str();
  39. }
  40.  
  41. ---------------------------------------------------------------------------------------------------
  42. Сериализатор принудительно закачивает \0 В конец каждой сериализации
  43.  
  44. ->BEGIN___________________________________________<-
  45. ->22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST<-
  46. ->END___________________________________________<-
  47.  
  48. Сериализация начинается с "22 serialization::archive"
  49.  
  50. ->BEGIN___________________________________________<-
  51. ->22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST22 serialization::archive 2<-
  52. ^^^^^^^^^--------ТУТ
  53. ->END___________________________________________<-
  54.  
  55.  
  56. ->BEGIN___________________________________________<-
  57. VVVVVV А должно быть тут
  58. -> 0 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST<-
  59. ->END___________________________________________<-
  60.  
  61. Рвет даннные просто по частям.... , хотя ему принудительно в конце сериализации добавляю \0
  62.  
  63.  
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement