我将构建一个多客户端/服务器系统。它应该像这样工作:
客户端使用TCP / IP与服务器通信
当客户端连接到服务器时,客户端发送命令字符串。当服务器收到命令字符串时,它会解析它,执行所需的工作,然后向客户端发送响应。
当客户端关闭TCP连接时,服务器将销毁与该客户端相关的资源。
服务器是一个多线程程序。命令receive
,命令parse
,命令deal
和对客户端的响应可能都在不同的线程中。
现在,我想定义一个CmdTcpContext
类来包含与客户端相关的数据。
class CmdTcpContext
18 {
19 public:
20 CmdTcpContext(){recv_buff_.SetRecvList(&recv_list_);}
21 ~CmdTcpContext(){}
22
23 CmdRecvBuffer & recv_buff(){return recv_buff_;}
24 SendBuffer & send_buff(){return send_buff_;}
25
26 RecvList<CmdPackage> & recv_list(){return recv_list_;}
27 RecvList<CmdPackage> & send_list(){return send_list_;}
28
29 InetAddr & inet_addr(){return addr_;}
30 SockStream & sock_stream(){return stream_;}
31
32 EventHandler * event_handler(){return handler_;}
33 void event_handler(EventHandler * eh){handler_ = eh;}
34 private:
35 SockStream stream_;
36 InetAddr addr_;
37
38 CmdRecvBuffer recv_buff_;
39 SendBuffer send_buff_;
40
41 RecvList<CmdPackage> recv_list_;
42 RecvList<CmdPackage> send_list_;
43
44 EventHandler *handler_;
45 };
我的问题是:当客户端关闭连接时,如何销毁CmdTcpContext
对象?