根据boost asio文档,如果我对一个异步连接操作挂起的套接字调用close,处理程序将被“立即”调用,并带有错误代码。从文档中可以看到:
此函数用于关闭套接字。任何异步发送、接收或连接操作都将立即取消,并以boost::asio::error::operation_aborted错误完成。
但实际上并不是立即/同步调用处理程序,而是在控制返回到io_service时异步调用它。如果连接实际成功并且我的处理程序回调已经发布到io_service,那么在调用close之后,我的连接处理程序是否仍然被调用而没有错误代码?
文档说明未完成的操作将立即取消,而不是立即调用。
连接操作可能已经完成,并且处理程序在io_service
中排队等待延迟调用,其error_code
作为boost::system::errc::success
。可能值得考虑检查完成处理程序中的套接字是否为_open()
,如本答案中所做的那样。有关此行为的更多详细信息,请参阅以下答案。
提前致谢
根据http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/overview/cpp2011/futures.html,我们可以将boost::asio与一起使用。但是我找不到任何有关使用的信息,它具有更多的功能,例如。我怎么用?
我试图使用Akka和Scala编写一个TCP服务器,它将实例化参与者,并在客户端分别连接和断开连接时停止参与者。我有一个TCP绑定执行器, 上面实例化上的TCP侦听器,并将处理程序参与者注册到每个连接。 我没有在附近配置的非Windows机器上进行测试,因为我认为这与我在Windows上运行有关,因为在搜索之后,我发现了一个仍然打开的bug--https://github.com/akka/akk
我已经配置了HAProxy(1.5.4,但我也尝试了1.5.14),以便在TCP模式下平衡5672端口上公开AMQP协议(WSO2 Message Broker)的两台服务器。客户端通过Haproxy创建并使用到AMQP服务器的永久连接。 我更改了客户端和服务器TCP keepalive超时,设置net.ipv4.tcp_keepAlive_time=120(CentOS 7)。 在HAProxy
我正在尝试用Boost::ASIO实现NAT打孔。根据我的理解,NAT穿孔器的工作原理是这样的(UDP/TCP): 客户端A绑定到端口并连接到服务器S,客户端B执行相同操作。 当S同时接收到请求和匹配时,它将A的ip和端口发送给B,B发送给A。 a和B接收对方的ip和端口,现在它们从同一端口向对方发送消息并形成连接(因为它们正在等待回复?) 如果没有成功的或,我似乎无法运行任何。当然,当目标端口没