// 헤더들은 대략 이정도

#include <boost/serialization/serialization.hpp> // 직렬화 라이브러리

#include <boost/asio.hpp>

#include <boost/archive/binary_oarchive.hpp> // 직렬화를 위한 유틸리티


//

// userlist 데이터 타입에 대한 stl serialization 헤더도 추가로 필요함.

// 예를 들자면 boost/serialization/map.hpp 이런식으로

//


asio::streambuf userlist_buffer;

archive::binary_oarchive oar{userlist_buffer};


oar << userlist; // 유저리스트를 버퍼에 삽입


buf.sputc(); // 버퍼에 헤더 삽입


packet_header header;

header.type = packet::type::ntf_userlist; // // 유저리스트 알림 패킷 타입임을 지정한다.

header.size = sizeof(header) + userlist_buffer.size(); // 헤더의 크기는 헤더 크기 + 직렬화된 유저리스트의 크기


asio::streambuf sendbuffer;


sendbuffer.sputc(reinterpret_cast<const char*>(&header), sizeof(header)); // 송신 버퍼에 헤더 삽입.

sendbuffer.sputc(asio::buffer_cast<const char*>(userlist_buffer.data()), userlist_buffer.size()); // 직렬화된 유저리스트 삽입


socket->send(asio::buffer_cast<const void*>(buf.data()), buf.size()); // 송신


이런식으로 하면 되니까 깔끔하게 고쳐서 쓰삼