使用boost::asio实现客户端的异步通讯访问pop3服务器。
#include#include #include using namespace std;using boost::asio::ip::tcp;#define MAIL_SERVER "pop3.m.com" // 邮件服务器域名// pop3命令#define CMD_USER "user myuser\n"#define CMD_PASS "pass mypass\n"#define CMD_QUIT "quit\n"// 接收缓存#define RECV_BUFFER_SIZE 1024// 异步socket事件处理类class async_socket_handler{private: tcp::socket &m_sock; // boost tcp socket string m_status; // 执行状态 char m_buffer_1[RECV_BUFFER_SIZE]; // 消息接收缓存public: async_socket_handler(tcp::socket &sock) : m_sock(sock), m_status("closed") { return; } // 当连接完成后,执行该方法 void on_connected(const boost::system::error_code& error) { if ( error == 0 ) { // 连接成功,打印消息, cout<<"info: connection has been established"< endpoint(); try { // 首先执行异步连接,此后的操作在async_socket_handler中 // 根据不同的命令状态一次完成。 socket.async_connect(endpoint, boost::bind(&async_socket_handler::on_connected, &handler, boost::asio::placeholders::error)); ioservice.run(); // 启动异步io过程 cout<<"io service running finished"<