Articles of boost asio

Boost linker error: Símbolo externo sin resolver “class boost :: system :: error_category const & __cdecl boost :: system :: get_system_category (void)”

Estoy empezando con Boost por primera vez, detalles: Estoy usando Visual Studio 2008 SP1 Estoy haciendo una construcción x64 Estoy usando boost :: asio solamente (y cualquier dependencia que tenga) Mi código ahora se comstack, y apunté mi proyecto a las bibliotecas de impulso (después de haber construido x64 libs) y supere problemas simples, ahora […]

¿Cuál es la forma correcta de desconectar de forma segura un socket ASIO SSL?

Un socket TCP SSL / TLS boost-asio se implementa como una ssl::stream en un tcp::socket boost::asio::ssl::stream ssl_socket; En el protocolo TLS , un cierre criptográficamente seguro implica que las partes intercambien mensajes close_notify . Simplemente cerrar la capa más baja puede hacer que la sesión sea vulnerable a un ataque de truncamiento . In boost […]

Se necesita cierta aclaración sobre las operaciones asio síncronas y asíncronas

Por lo que yo sé, la principal diferencia entre las operaciones sincrónicas y asíncronas. Es decir, write() o read() frente a async_write() y async_read() es que los primeros, no regresan hasta que la operación termine -o error-, y los últimos, vuelven inmediatamente. Debido al hecho de que las operaciones asincrónicas están controladas por un io_service.run() […]

Impulse el streambuf de ASIO

Estoy confundido sobre la secuencia de entrada y la secuencia de salida en las clases boost asio :: streambuf. De acuerdo con los ejemplos de código (para enviar datos) en la documentación, parece que el búfer que representa la secuencia de entrada se utiliza para escribir en el zócalo y el que representa la secuencia […]

SO_RCVTIME y SO_RCVTIMEO no afectan las operaciones de Boost.Asio

A continuación está mi código boost::asio::io_service io; boost::asio::ip::tcp::acceptor::reuse_address option(true); boost::asio::ip::tcp::acceptor accept(io); boost::asio::ip::tcp::resolver resolver(io); boost::asio::ip::tcp::resolver::query query(“0.0.0.0”, “8080”); boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(query); accept.open(endpoint.protocol()); accept.set_option(option); accept.bind(endpoint); accept.listen(30); boost::asio::ip::tcp::socket ps(io); accept.accept(ps); struct timeval tv; tv.tv_sec = 1; tv.tv_usec = 0; //setsockopt(ps.native(), SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); setsockopt(ps.native(), SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); char buf[1024]; ps.async_receive(boost::asio::buffer(buf, 1024), boost::bind(fun)); io.run(); Cuando uso Telnet […]

Copie el contenido de un streambuf a una cadena

Aparentemente boost::asio::async_read no le gustan las cadenas, ya que la única sobrecarga de boost::asio::buffer me permite crear const_buffer s, así que estoy atascado con leer todo en un streambuf. Ahora quiero copiar el contenido del streambuf en una cadena, pero aparentemente solo admite escribir en char * ( sgetn() ), crear un istream con streambuf […]

Servidor de socket C ++: no se puede saturar la CPU

Desarrollé un mini servidor HTTP en C ++, usando boost :: asio, y ahora estoy cargando la prueba con múltiples clientes y no he podido acercarme a la saturación de la CPU. Estoy probando en una instancia de Amazon EC2 y obteniendo aproximadamente el 50% de uso de una CPU, el 20% de otra, y […]

Soporte oficial de la “Biblioteca Boost” para Android e iOS

Esta pregunta es una continuación de ¿Debería elegir Boost Asio o Aysnc Socket Threads en Android? preguntó, Las bibliotecas Boost están destinadas a ser ampliamente útiles y utilizables en una amplia gama de aplicaciones, pero todavía no hay soporte oficial disponible para Android e iOS. ¿Hay alguna razón específica detrás de lo mismo como No […]

La mejor documentación para Boost: asio?

La documentación disponible en el sitio web de impulso es … limitada. De lo que he podido leer, el consenso general es que simplemente es difícil encontrar una buena documentación sobre la biblioteca boost :: asio. ¿Es este realmente el caso? Si es así, ¿por qué? Notas: Ya encontré el sitio web Asio (sin refuerzo), […]

Aumente las funciones async_ * y shared_ptr’s

Frecuentemente veo este patrón en el código, vinculando shared_from_this como primer parámetro a una función miembro y enviando el resultado usando una función async_* . Aquí hay un ejemplo de otra pregunta: void Connection::Receive() { boost::asio::async_read(socket_,boost::asio::buffer(this->read_buffer_), boost::bind(&Connection::handle_Receive, shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); } La única razón para usar shared_from_this() lugar de this es mantener el objeto activo […]