acl  3.5.3.0
tcp_client.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "connect_client.hpp"
4 
5 namespace acl
6 {
7 
8 class socket_stream;
9 class tcp_sender;
10 class tcp_reader;
11 class string;
12 
14 {
15 public:
16  tcp_client(const char* addr, int conn_timeout = 10, int rw_timeout = 10);
17  virtual ~tcp_client(void);
18 
19  /**
20  * 向服务器发送指定长度的数据包
21  * @param data {const void*} 要发送的数据包地址
22  * @param len {unsigned int} 数据长度
23  * @param out {string*} 当该对象非 NULL 时表明需要从服务器读取响应数据,
24  * 响应结果将被存放在该缓冲区中,如果该对象为 NULL,则表示无需读取
25  * 服务器的响应数据
26  * @return {bool} 发送是否成功
27  */
28  bool send(const void* data, unsigned int len, string* out = NULL);
29 
30 protected:
31  // @override
32  virtual bool open(void);
33 
34 private:
35  char* addr_;
36  int conn_timeout_;
37  int rw_timeout_;
38 
39  socket_stream* conn_;
40  tcp_sender* sender_;
41  tcp_reader* reader_;
42 
43  bool try_open(bool* reuse_conn);
44 };
45 
46 } // namespace acl
#define ACL_CPP_API