`
zhangyafei_kimi
  • 浏览: 266174 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

用asio的定时器实现带超时的connect,备忘

阅读更多
// test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
#include <iostream>

using namespace boost::asio;
using boost::asio::ip::tcp;

class connect_handler
{
public:
	connect_handler(io_service& ios)
		: io_service_(ios),
		timer_(ios),
		socket_(ios)
	{
		socket_.async_connect(
			tcp::endpoint(boost::asio::ip::address_v4::loopback(), 3212),
			boost::bind(&connect_handler::handle_connect, this,
			boost::asio::placeholders::error));

		timer_.expires_from_now(boost::posix_time::seconds(5));
		timer_.async_wait(boost::bind(&connect_handler::close, this));
	}

	void handle_connect(const boost::system::error_code& err)
	{
		if (err)
		{
			std::cout << "Connect error: " << err.message() << "\n";
		}
		else
		{
			std::cout << "Successful connection\n";
		}
	}

	void close()
	{
		socket_.close();
	}

private:
	io_service& io_service_;
	deadline_timer timer_;
	tcp::socket socket_;
};

int main()
{
	try
	{
		io_service ios;
		tcp::acceptor a(ios, tcp::endpoint(tcp::v4(), 32123), 1);

		// Make lots of connections so that at least some of them will block.
		connect_handler ch1(ios);
		//connect_handler ch2(ios);
		//connect_handler ch3(ios);
		//connect_handler ch4(ios);
		//connect_handler ch5(ios);
		//connect_handler ch6(ios);
		//connect_handler ch7(ios);
		//connect_handler ch8(ios);
		//connect_handler ch9(ios);

		ios.run();
	}
	catch (std::exception& e)
	{
		std::cerr << "Exception: " << e.what() << "\n";
	}

	return 0;
}
分享到:
评论

相关推荐

    C++定时器实现

    总的来说,C++中的定时器实现可以根据需求选择不同的方法,从简单的基于线程和条件变量的实现到使用高级库如Boost.Asio。理解这些机制可以帮助我们更好地控制程序的时间行为,从而提高软件的效率和可靠性。在实际...

    C++自定义定时器实现(多对象多定时器)

    总之,C++中的自定义定时器实现是一个涉及多方面技术的问题,需要对C++语言特性、多线程、时间处理和事件驱动编程有深入理解。通过合理的设计和实现,我们可以创建出高效且灵活的定时器系统,满足各种复杂的应用场景...

    用asio自封装负载均衡网络库、定时器、线程池

    4. **定时器**:定时器允许程序在指定的时间后执行特定操作,这对于实现心跳检测、超时处理等功能非常有用。Boost.Asio提供了timer类,可以设置定时触发的回调函数。封装定时器时,需要考虑如何优雅地管理和取消定时...

    多种VC定时器、延时实现方法源代码

    本资源提供了七种不同的定时器实现方法,旨在帮助开发者深入理解定时器的工作原理,并根据项目需求选择合适的实现方式。下面将详细解释这些知识点。 1. **SetTimer API** Windows API中的`SetTimer`函数是最早的...

    boost asio tcp服务器的实现

    本篇文章将详细探讨如何使用Boost.Asio实现一个TCP服务器,以及涉及的关键技术点。 首先,`boost::asio`是一个强大的C++库,它提供了异步I/O操作,适用于网络通信、定时器和信号处理等场景。它的设计基于C++标准库...

    TCP_server___client_ASIO异步实现服务器代码_

    本教程将深入探讨如何使用Boost.Asio库来实现一个TCP服务器和客户端。 首先,让我们了解TCP(传输控制协议)。TCP是一种面向连接的、可靠的传输协议,它保证了数据包的顺序和完整性,适合于需要稳定、无丢失通信的...

    定时器源码

    - **优化性能**:根据具体需求,优化定时器实现,提高系统效率。 - **扩展功能**:自定义定时器,增加特定功能,满足复杂业务需求。 综上所述,定时器源码的学习可以帮助开发者提升对时间控制的理解,掌握更多...

    C/C++ 定时器程序(含源码和demo)

    总结来说,这个C/C++定时器程序是一个宝贵的资源,不仅提供了实践机会,还能帮助我们深入理解操作系统级别的定时器实现,以及跨平台开发的技巧。通过学习和使用这个程序,我们的编程能力将得到显著提升。

    C++ asio库实现的简单web server

    在本文中,我们将深入探讨如何使用ASIO库来实现一个简单的Web服务器。 一、ASIO库介绍 ASIO(Asynchronous Input/Output)是一个跨平台的C++库,它支持多种协议,包括TCP、UDP和套接字等。ASIO的主要特点是其异步...

    asio 不依赖boost版

    4. **计时器**:ASIO提供了一种定时器类,如`deadline_timer`和`high_resolution_timer`,它们可以设置在特定时间后触发事件,这对于实现超时机制、心跳检测等功能非常有用。 5. **直接包含头文件使用**:这个版本...

    boost::asio::serialport实现串口通信

    本篇文章将详细介绍如何使用`boost::asio::serialport`来实现串口通信。 首先,我们需要理解`boost::asio`的核心概念。`asio`代表Asynchronous Input/Output,即异步输入/输出。它支持同步和异步两种通信模式,使得...

    Boost ASIO C++ 网络编程 中文版 带全书所有例子代码

    学习如何使用ASIO的SSL支持实现安全的网络连接,包括证书管理和加密算法。 9. **高性能服务器设计** 通过案例分析,了解如何利用ASIO的非阻塞I/O和多路复用技术构建高性能、可扩展的服务器架构。 10. **实例分析...

    asio全示例代码

    5. **错误处理和重试机制**:ASIO提供了丰富的错误处理机制,帮助开发者优雅地处理网络异常,如连接中断、超时等。 6. **SSL/TLS安全通信**:ASIO支持SSL/TLS加密,可以用于保护敏感数据的安全传输,如银行交易、...

    xcode iOS 使用 boost::asio 的 demo

    此外,Boost.Asio还提供了强大的定时器功能,如`boost::asio::deadline_timer`,可以用来设置超时或定期执行任务。这在实现心跳机制或控制网络请求的超时方面非常有用。 最后,要确保正确处理异常和错误,因为在I/O...

    ODeus ASIO LinkPro实现网络K歌的方法

    "ODeus ASIO LinkPro"是一款专门针对提升音频传输性能的工具,它允许用户通过虚拟ASIO驱动来扩展声音通道,从而实现专业声卡在网络K歌时的无延迟、不卡麦效果。下面将详细阐述ASIO技术以及ODeus ASIO LinkPro如何...

    Boost.Asio C++ Network Programming(高清,带书签,可复制)

    此外,Boost.Asio还支持时间轮定时器,使得开发者可以方便地设置超时操作。 C++网络编程的关键概念,如套接字编程、网络协议的理解(如TCP/IP、UDP)、错误处理和异常安全,都在书中得到详尽阐述。作者会引导读者...

    LabVIEW调用ASIO声卡驱动

    开发者需要理解ASIO的工作原理,熟悉LabVIEW的编程环境,并且能够正确使用或编写ASIO接口库,才能有效地实现音频的低延迟播放和录音。通过学习和实践,这项技术可以为专业音频应用带来显著的性能提升。

    C++ 定时器 线程的使用

    2. **Boost库中的`boost::asio::deadline_timer`**: Boost库提供了一种更为精确的定时器,它可以设定一个时间点,在到达该时间点时触发一个回调函数。 3. **Windows API的`SetTimer`函数**: 对于Windows平台,可以...

    简化版asio,只实现了win iocp,主要代码仅千行

    最近一个windows的项目(手游服务器)中不允许使用boost,这让长期用boost::asio搞linux服务程序开发的我很不适应,于是抽了一周的时间研究了boost::asio的IOCP实现,并实现了一个简化版,主要代码仅千行,正好能用于...

    boost.asio 代码 侯捷_-_Boost_技术与应用.pdf

    SSL(Secure Sockets Layer,安全套接字层)/ TLS(Transport Layer Security,传输层安全)**:书中的这部分可能涉及如何使用 Boost.Asio 实现加密的网络通信,保证数据的安全传输。 **10. chat 示例**:书中可能...

Global site tag (gtag.js) - Google Analytics