草庐IT

asio-acceptor

全部标签

c++ - 如何使用 boost::asio 中的 'chunked' HTTP 传输协议(protocol)将文件写入套接字?

所以处理boostHTTPServer3example,我想修改connection::handle_read以支持发送正文和消息。但是,这样做的方法对我来说并不明显。我想写这样的东西:voidconnection::handle_read(constboost::system::error_code&e,std::size_tbytes_transferred){...if(result){boost::asio::async_write(socket_,reply.to_buffers(),strand_.wrap(boost::bind(&connection::write_bo

c++ - 使用 boost::asio 的 AF_NETLINK (netlink) 套接字

我正在编写基于this的多播客户端/服务器应用程序和this;效果很好。但是,当计算机中事件网络接口(interface)的数量发生变化时,我还需要做一些事情,比如thispage的示例部分中的程序。我想我应该使用boost::asio::local中的工具,但我不确定我应该使用boost::asio::local::datagram_protocol还是boost::asio::local::stream_protocol或者...如何做尽可能相似的事情的例子会很有帮助。谢谢。 最佳答案 正如您所注意到的,必须编写一些额外的代码才

c++ - boost.asio 如何发现我的服务器应用程序正在监听哪个端口?

我有点奇怪,当客户端应用程序连接到服务器时,boost.asio不使用基本概念——使用IP地址和端口。可能是我对Boost有点菜鸟-我接受-但无论如何我不明白。所以,我有这样的代码让客户端连接到本地主机上的服务器:boost::asio::io_serviceio_service;tcp::resolverresolver(io_service);tcp::resolver::queryquery("localhost","daytime");tcp::resolver::iteratorendpoint_iterator=resolver.resolve(query);tcp::re

c++ - boost::asio::io_service 就绪处理程序的定义是什么?

我试图了解io_service的poll()/poll_one()和run()/run_one()之间的区别。文档中所述的区别在于poll()执行就绪处理程序,而不是执行任何处理程序的run()。但是我在boost文档中的任何地方都找不到“就绪处理程序”的定义。这个问题的有效答案是能够显示(最好是通过代码示例)就绪处理程序和未就绪处理程序之间的区别以及poll()和run()执行它的方式之间的区别。谢谢。 最佳答案 “就绪处理程序”是准备好执行的处理程序。如果您发出了一个异步调用,它会在后台执行,并且它的处理程序在异步调用完成后准备

c++ - 将 fork() 与 boost::asio::ip::tcp::iostream 一起使用是否安全?

我正在尝试守护一个简单的TCP客户端,虽然客户端在前台工作得很好,但守护它会导致奇怪的行为。作为测试用例,我有一个服务器,一旦您连接并发送一条消息(“已连接”),它就会每秒向您发送一次连接的秒数。如果我进行守护进程(通过调用Test::Connect(true)),连接会在任意时间后断开,即使在成功接收到一些数字后也是如此。如果我不进行守护进程(通过调用Test::Connect(false)),连接将保持事件状态并且我会继续按预期接收号码。#include#include#include#includeclassTest{public:Test(){io=nullptr;}voidC

c++ - 使用 boost::asio 打洞

我试图用打洞协议(protocol)制作一个服务器客户端。所以我将我的客户端IP和客户端端口发送到我的服务器,当第二个用户连接时,服务器向两个客户端发送另一个客户端的IP和端口。所以当我有这个时,我试图在我的两个客户端之间建立连接,但我遇到了boost::asio错误terminatecalledafterthrowinganinstanceof'boost::exception_detail::clone_impl>'what():找不到服务中止这是我的代码std::vectorresponse;response=split(reply,':');std::coutendpoint_

c++ - boost asio iostream - 如何获取本地IP地址

这是我的问题:我正在使用boost::asio::ip::tcp::iostream连接到服务器:boost::asio::ip::tcp::iostreams(IP,"1237");现在我想检索我自己的本地IP地址。我在谷歌深处的某个地方找到了如何用socket做到这一点。,但是流呢?我希望由于tcp::iostream是建立在套接字之上的,所以它应该是这样的:s.local_endpoint().address()但是在用google和duckduckgo进行了长时间的搜索之后,我不知道该怎么做。我已经尝试了几种最明显的排列,但仍然没有运气。那么,有什么简单的方法可以做到这一点,还

c++ - Boost asio tcp socket available 报告不正确的字节数

在SSL客户端服务器模型中,我使用下面的代码从客户端或服务器端的套接字读取数据。我只在有可用数据时才读取数据。为了知道何时有可用数据,我检查了asio::ssl::stream的lowest_layer()上的available()方法.当我从客户端向服务器发送380个字节并在服务器上进入读取方法后,我看到以下内容。‘s’是我提供的缓冲区。“n”是我提供的缓冲区的大小。‘a1’是读取前available()的结果,将报告458字节。‘r’是实际读取的字节数。它会报告380,这是正确的。‘a2’是读取后available()的结果,将报告0字节。这是我所期望的,因为我的客户发送了380个

c++ - Boost Asio tcp::acceptor 访问冲突异常

我正在尝试并排创建一个tcp::acceptor和一个libtorrent::session,但是在等待来自std::cin。如堆栈跟踪所示,访问冲突发生在BoostIOCP实现中。Windows8.1MSVC12.0(VisualStudio2013)boostv1.57.0libtorrent-rasterbarv1.0.3一个让我重现问题的最小示例,#include#includeintmain(intargc,char*argv[]){boost::asio::io_serviceio_service;boost::asio::ip::tcp::acceptoracceptor

c++ - 这个 boost::asio 和 boost::coroutine 使用模式有什么问题?

在this问题我描述了boost::asio和boost::coroutine使用模式,这导致我的应用程序随机崩溃,我发布了我的代码和valgrind和GDB输出。为了进一步调查问题,我创建了较小的概念验证应用程序,它应用了相同的模式。我看到我在此处发布的源代码较小的程序中出现了同样的问题。代码启动了几个线程并创建了一个带有几个虚拟连接(用户提供的数字)的连接池。附加参数是无符号整数,它扮演伪请求的角色。sendRequest函数的虚拟实现只是启动异步计时器,等待秒数等于输入数和函数的yileds。有人能看出这段代码的问题吗?他能提出一些修复建议吗?#include"asiocorou