草庐IT

BOOST-ASIO

全部标签

c++ - boost::asio tcp 数据库服务器

我需要一些提示:我正在编写一个tcp数据库服务器,它可以容纳100个字符串(我使用字符串vector来保存数据)。到目前为止,我实现的基本功能是:客户端发送:PUT"index""value"-字符串被放入vector[index]。客户端发送:GET"index"-vector[index]被发送给客户端我的工作基于boost::asio异步回显服务器示例http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/example/echo/async_tcp_echo_server.cpp现在,我想将服务器的功能扩展到:仍未解决1

c++ - 用时间检查数据?

有没有办法在asio中检查特定时间的数据?我有一个带有方法的asio套接字的客户端boolASIOClient::hasData(){returnm_socket->available();}我想在这里有某种延迟,这样它最多可以检查1秒的数据并更早地返回。此外,由于显而易见的原因,我不想对它进行投票,因为它可能需要一秒钟。我使用它的原因是,我确实向客户端发送数据并等待响应。如果他在一定时间内没有回应,我会关闭socket。这就是提到hasData的原因。我知道使用select和fd_set是可行的。asio客户端是在服务器套接字类的Accept方法中创建的,稍后用于处理请求并将数据发送

c++ - boost asio tcp ip 写入

我正在使用此代码http://www.boost.org/doc/libs/1_42_0/doc/html/boost_asio/tutorial/tutdaytime1/src.html为了创建客户端并与服务器对话。我正在使用以下代码发送消息boost::asio::write(socket,boost::asio::buffer(msg),ignored_error);我遇到的问题是,如果我声明一个字符串msg="test123";并发送它,服务器将得到“test123”但是如果使用cintest123同样适用于char[]如果使用-lboost_system参数很重要,我正在使用

c++ - 使用 Visual Studio boost asio TCP IP asio 类编译错误。错误 : C2228: left of '.close' must have class/struct/union

我正在尝试按照本页中提供的步骤进行操作http://www.boost.org/doc/libs/1_46_0/doc/html/boost_asio/tutorial/tutdaytime1.html但是,有时代码无法编译,并给出指定的错误。我无法理解这是一种什么样的冲突。似乎未正确创建对象tcpsock。请检查我的代码:io_serviceio_tcp;tcp::resolverresolverObject(io_tcp);tcp::resolver::queryqueryObject(argv[1],"daytime");tcp::resolver::iteratorendpoi

c++ - 重用 Asio 连接

我正在从事一个项目,目前我有一个网络服务器。我必须添加功能,以便对于每个请求,我需要向其他服务器发送多个请求、获取响应并将结果发送回原始客户端。这些服务器的吞吐量很高,所以我开始担心套接字的数量以及设置新线程/套接字以通过多个套接字发送多个请求的速度。因此,我开始考虑对每个客户端开放一个(或几个)连接将有助于解决这个问题。我不确定持久连接和提升ASIO是如何工作的。我有一些问题:-如何使用ASIOtcp套接字设置保持事件时间。-我可以通过同一个套接字发送多个并发请求吗?我会遇到结果顺序的问题吗(每个结果都应该有一个Id,所以我指的不是乱序发送的顺序,而是更多的数据包顺序,如果响应不止一

c++ - 使用 shared_ptr c++ boost tcp 套接字

我正在尝试使用C++中的新类来包装boostTCP。当我直接调用boost函数时,一切都很顺利。但是,当关闭包装在类函数中时,我无法调用套接字关闭。请帮忙看看下面的代码。类定义:typedefboost::shared_ptrSocket;classTCPConnector{public:boolisConnected;Socketsock;stringip;intport;TCPConnector(stringip,intport);voidClose();boolConnect();};功能:TCPConnector::TCPConnector(stringip,intport):

c++ - Boost ASIO async_connect 在应该失败的时候却成功了,为什么?

我有一个服务器应用程序,其中我只接受一个带有boost::asio::ip::tcp::acceptor和async_accept的客户端。我运行客户端应用程序并使用boost::asio::ip::tcp::socket和async_connect成员函数成功连接。然后我让客户端崩溃(CTRL-ALT-DEL)。如果我重新启动客户端应用程序并尝试重新连接,它会成功...即使我没有在服务器端重做async_accept。这怎么可能?编辑:如果服务器应用程序未运行,async_connect将失败。 最佳答案 有可能是因为accept

sockets - 使用 Boost.Asio 可以同时运行哪些套接字发送/接收操作

我知道可以在TCP和UDP套接字上同时运行async_send和async_receive操作。但是在这些情况下预期的行为是什么:在UDP套接字上同时调用两个async_send操作。在UDP套接字上同时调用两个async_receive操作。在TCP套接字上同时调用两个async_send操作。在TCP套接字上同时调用两个async_receive操作。我主要对第一种情况感兴趣;因为UDP不一定保留发送数据包的顺序,所以我不太关心它们的发送顺序是否与调用async_send的顺序不同。 最佳答案 如果没有BoostASIO,同样的

c++ - Boost连接后从TCP服务器访问TCP客户端IP地址+端口

我已经使用boostasio实现了一个tcp客户端和tcp服务器。代码如下。(test.cpp、test.hpp和makefile)可执行文件可以运行为(服务器端)$./client_server15005(客户端)$./client_server05005tcp_server类,当它接受连接时应该知道远程端点(client_ip地址+客户端端口地址)。但是似乎没有变量似乎将其存储在服务器端。我想存储客户端端点信息。我该怎么做?测试.cpp#include"test.hpp"#include#include#include#include#include#include#include

c++ - boost::asio::ip::tcp::socket 不读取任何内容

这实际上是我在套接字编程方面的第一个程序,而不是复制粘贴教程代码并从中获得乐趣。无论如何它不起作用。我想我已经仔细阅读了文档,但也许还不够。我怀疑我在read_message()中使用了socket::read_some(),因为我有问题的程序在读取部分停止了。我认为我使用它的方式应该没问题,因为socket::read_some()的文档指出“函数调用将阻塞,直到一个或多个字节的数据被成功读取,或者直到一个发生错误。”下面是我的代码。任何帮助表示赞赏。voidread_message(std::string&message,boost::asio::ip::tcp::socket&s