草庐IT

asio-acceptor

全部标签

c++ - Boost、asio、https 和主机/证书验证

我正在查看Boost的SSLClient.评论中提到了OpenSSL(抱歉,没有行号)://Theverifycallbackcanbeusedtocheckwhetherthecertificatethatis//beingpresentedisvalidforthepeer.Forexample,RFC2818describes//thestepsinvolvedindoingthisforHTTPS.ConsulttheOpenSSL//documentationformoredetails.Notethatthecallbackiscalledonce//foreachcert

c++ - boost::asio 在没有 WLAN 的情况下无法连接到本地主机

在我的电脑(SurfacePro2)上,只有一个网络适配器,它是一个无线LAN适配器。我在一个小型C++项目上工作,它使用boost::asio连接到本地主机并执行它的工作,一切都很好。但是今天我发现,如果我断开WLAN与互联网的连接,这个程序不工作。boost::asio的解析器将抛出异常:tcp::resolver::queryquery("localhost","10127");tcp::resolverresolver(io_service_);tcp::resolver::iteratoriterator;try{iterator=resolver.resolve(query

c++ - 我可以对多个监听套接字使用相同的 boost::asio::io_service 吗?

我正在使用Boostasio1.48。是否可以为同时打开的多个监听套接字重复使用单个boost::asio::io_service实例?文档说它是共享安全的,但我不确定这是否已经是一个肯定的答案。 最佳答案 是的,你可以,而且你应该这样做。您可以使用相同的io_service来处理这些套接字、处理计时器、处理您向其发布的请求,等等。io_service的全部意义在于充当各种工作的中央调度员。 关于c++-我可以对多个监听套接字使用相同的boost::asio::io_service吗?,

c++ - boost::asio,线程池和线程监控

我已经使用boost::asio实现了一个线程池,一些boost::thread对象调用boost::asio::io_service::运行()。但是,给我的要求是有一种方法来监视所有线程的“健康”。我的目的是制作一个可以通过线程池传递的简单哨兵对象——如果它通过了,那么我们可以假设该线程仍在处理工作。但是,根据我的实现,我不确定如何(如果)能够可靠地监视池中的所有线程。我只是将线程函数委托(delegate)给boost::asio::io_service::run(),因此将哨兵对象发布到io_service实例中并不能保证哪个线程实际上会得到那个哨兵并完成工作。一种选择可能是定

c++ - boost::asio server - 监听服务器端口失败

我有一个基于boost::asio的服务器,它工作正常,除了我试图添加一个检查,以确保没有其他东西在同一端口上接受连接。如果我创建两个服务器,其中一个始终接受连接,但另一个不报告任何错误(两者中的哪一个接受所有连接似乎是随机的)。服务器类的相关部分(它是一个使用基类的模板,该基类具有用于创建连接类型的Accepted()和typedef):MessageServer(boost::asio::io_service&io,unsignedshortport_num):BaseServerType(io),acceptor_(io,boost::asio::ip::tcp::endpoin

c++ - boost::asio,异步读取错误

由于某种原因,这会导致访问冲突,但是没有任何详细的文档/帮助,我不确定我在哪里做错了。由于按照我在boost站点上看到的内容进行,这应该是正确的,并将来自客户端的每个asio::write调用的内容打印到一个新行。客户端似乎工作正常。虽然此时服务器崩溃了,但它还没有发送任何东西。访问冲突发生在basic_stream_socket.hpp的275行,原因好像是对象(boost::asio::stream_socket_service)没有初始化(this指针的值为0xfeeefeee),但是我没有不明白为什么不是。程序输出:StartserverServer::startAccept(

c++ - boost::asio 线程池与 io_service_per_cpu 设计

目前我不确定,我尝试制作一个高性能服务器,我有一个6核CPU,所以如果我使用“io_service_per_cpu”设计,我有6个io_service。我已经听说线程池设计不是最好的,但我不确定。你有什么知识?有人已经对每个进行了压力测试,还是其他? 最佳答案 根据我的经验,按照以下顺序进行异步应用程序设计要容易得多:单线程和单io_service多个线程,每个线程从单个io_service调用io_service::run()。使用strands用于需要访问共享数据结构的处理程序。io_service每个cpu在对您的应用程序进行

c++ - 不能在非 Boost 版本的 Asio 中使用 asio::placeholders::error

我正在尝试在项目中使用Asio的非Boost版本。我正在编写对stream_protocol::acceptor::async_accept的回调。签名需要传递asio::placeholders::error但当我这样做时,出现以下错误:错误:命名空间“asio::placeholders”中没有名为“error”的成员根据源代码,我可以看到错误存在,但类型为undefined,这对我来说是新的。我错过了什么吗?我应该对库进行某种预处理吗? 最佳答案 简而言之,使用std::placeholders::_1而不是asio::pla

c++ - boost asio 和 c++11 是否匹配?

我的一个客户希望我制作一个高性能、可靠的服务器,通过套接字接收数据流。他希望它是用c++编写的我全职使用C++已经有一段时间了,所以我一直在阅读一些东西。Asio似乎是用c++进行联网的一个不错的选择,而c++11似乎是一个很棒的c++新版本,具有许多新功能。我的问题:是否可以可靠地使用两者?是否有意义?我应该避免某些c++11功能,例如lambda吗? 最佳答案 我主要根据您计划的目标编译器来制定“要避免的C++11功能”。我看不出有任何理由避免使用lambda——所有主要的编译器都已经支持它们,并且它们大大提高了可读性。另一方面

c++ - boost::asio::spawn 是做什么的?

我无法在脑海中形成控制流如何随spawn发生的画面。当我调用spawn(io_service,my_coroutine)时,它是否向io_service队列添加了一个新的处理程序来包装对my_coroutine的调用?当我在协程中调用一个异步函数并将我的yield_context传递给它时,它会暂停协程直到异步操作完成吗?voidmy_coroutine(yield_contextyield){...async_foo(params...,yield);...//controlcomeshereonlyoncetheasync_foooperationcompletes}我不明白的是我