// // This program receives data sent by sendsample. // // The Middle code used is the same as in the send sample: // MsgManager // @msg_id_1 (std::vector, std::string) // @msg_id_2 (std::set) // } // #include #include #include #include #include #include #include #include using namespace cmw; int main() try { ReceiveBufferUDP buffer(4096); buffer.sock_ = server_prep_udp(12345); for (;;) { sockaddr_in si_other; socklen_t otherlen = sizeof(si_other); buffer.GotPacket((sockaddr*) &si_other, &otherlen); uint8_t msgid = 0; buffer.Give(msgid); MsgManager msgManager(20000); switch (msgid) { case msg_id_1: { ::std::vector vec; ::std::string str; msgManager.Receive(buffer, vec, str); ::std::vector::iterator vit = vec.begin(); ::std::vector::iterator vend = vec.end(); for (; vit != vend; ++vit) { ::std::cout << *vit << " "; } ::std::cout << "\n" << str << ::std::endl; } break; case msg_id_2: { ::std::set iset; msgManager.Receive(buffer, iset); ::std::set::iterator sit = iset.begin(); ::std::set::iterator stend = iset.end(); for (; sit != stend; ++sit) { ::std::cout << *sit << " "; } ::std::cout << ::std::endl; } break; default: ::std::cout << "Unexpected msg id: " << msgid << ::std::endl; } } return 1; } catch (failure const & ex) { ::std::cout << "failure: " << ex.what() << ::std::endl; }