- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有客户端服务器应用程序,流程如下所述:
客户端在windows端,不使用boost服务器在 linux 端并使用 boost客户端-服务器通过串行 channel RS485 进行通信。服务器使用 boost::asio::async_write
。
client --> calls command with specific command_id --> server
client <-- sends acknowledgement <-- server
{server process the command, meanwhile the client is blocked for response}
client <-- sends response <-- server
有时会发生客户端收到确认但没有收到响应的情况,即使响应是由服务器发送的。当客户端发送另一个命令时,客户端稍后会收到待处理的响应。
如果我使用 boost::asio::write
进行串行通信,则完全没有问题。
下面是async_write的代码片段
boost::asio::async_write(serial_port, boost::asio::buffer(&v_chunk[0], v_chunk.size()),
boost::bind(&Serial_channel::async_write_callback, this, boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
io_serv->run();
io_serv->reset();
最佳答案
您使用 io_service
的方式将不起作用。首先,在服务事件循环停止之前,run
函数不会返回。其次,如果你只想将它用作“轮询器”,那么你应该使用 poll
或者可选 poll_one
(或者可能是 run_one
)。
但是,如果您这样做,则与执行非异步 write
调用相同,并且您会失去异步函数的优势。
关于c++ - 串行 channel 上的 boost::asio::async_write 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16646350/
这是我的实现: 客户端 A 为客户端 B 发送消息 服务器通过async_read适量的数据处理消息和将等待来自客户端 A 的新数据(为了不阻止客户端 A) 之后服务器会处理信息(可能会做一个mysq
void Chat::Send(uint8_t* buffer, int length){ boost::asio::async_write(socket_,boost::asio::
我正在尝试使用 C++ 中的以下命令通过 TCP 套接字发送大约 50KByte 或更大的大量数据: boost::asio::async_write(sock, boost::asio::buffe
我正在使用一个 C 库,它可以提取 PDF 数据并通过回调为我提供该数据。使用了两个回调,一个为我提供作业 header ,另一个为我提供从 1 到 50MB block 不等的已提取数据。 然后我将
我正在尝试使用 async_write() 通过套接字将 jpeg 帧写入客户端。我用了 boost asynchronous TCP daytime server以示例作为起点。 #include
我这样调用 asio::async_write: namespace asio = boost::asio; using asio::ip::tcp; using std::string; share
我有一个非常特殊的问题。我编写了一个服务器,该服务器将从第三方接收到的数据写入连接的客户端。服务器在一段时间内可以正常写入客户端,但一段时间后,async_write 要么失败,要么写入永远不会返回。
我不确定为什么当我开始使用字符串作为缓冲区的 async_write() 时会出现段错误。我过去曾成功使用过此功能。 这是我得到段错误的方法: void StringSocket::sendLine(
我正在使用 Boost 通过 TCP 发送数据 async_write : std::shared_ptr::iterator> iter = std::make_shared::iterator>(
我正在聊天。出于某种原因,在其他客户端之间分发用户消息时,由 Server::msgHandler 组合在一起的字符串被 Connection::write #include #include #
我想写服务器(TCP/IP),我有一些问题,因为我不确定我的想法是否正确。 我需要一台只有一个线程的服务器。我需要向某些客户端读取和写入数据。我想使用 boost::asio 中的 async_acc
async_write(*this, BoostAsio::buffer(pck->_storage), boost::bind(&tcp_socket::handle_wrote, this, pc
我将展示一些代码; void wh(const boost::system::error_code& ec, std::size_t bytes_transferred) {
我目前正在使用 Asio C++ 库并围绕它编写了一个客户端包装器。我最初的方法是非常基本的,只需要在一个方向上流动。要求已经改变,我已经切换到使用所有异步调用。除了 asio::async_writ
我知道下一个 async_write() 应该在前一个完成时执行(有或没有错误,但完成时)。 我想知道在进行 async_write() 调用时,如果其中一个由于某种原因需要很长时间甚至永远不会结束(
我目前正在使用 boost::async_write 一次发送一次大缓冲区(大约 50KB)。结果是我在服务器端每 20 个缓冲区中收到大约一个损坏的缓冲区。 我的代码是这样的。省略了错误处理和其他细
情况如下 - 服务器正在向客户端发送数据,但是一些客户端已断开连接(不正常)。 然而,写入处理程序总是在没有任何关于管道损坏的错误的情况下完成。这是 TCP/IP 连接,所以我假设如果发送方(服务器)
在我的应用程序中,我必须为每个连接发送大约 10 kb/s 的速度。所有数据包都放在 std::deque 中。一个线程遍历双端队列并通过 asio::async_write 发送数据包。 我的问题是
现在我有一个 Connection 类,如下所示(不相关的东西被省略): class Connection : public std::enable_shared_from_this { public
当我调用 async_write() 时,在我再次调用 async_write() 之前,远程端不会接收数据。例如,我有 3 个数据包,a、b 和 c: SendPacket(a); // the r
我是一名优秀的程序员,十分优秀!