我将构建一个多客户端/服务器系统。预计会这样工作:
客户端使用 TCP/IP 与服务器通信
当客户端与服务器建立连接时,客户端会发送一个命令字符串。当服务器接收到命令字符串时,它会解析它,执行所需的工作,然后向客户端发送响应。
当客户端关闭 TCP 连接时,服务器会销毁与该客户端相关的资源。
服务器是一个多线程程序。command
receive
、 commandparse
、 commanddeal
和对客户端的响应可以各自在不同的线程中。
现在,我想定义一个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
我的问题是:当客户端关闭连接时如何销毁对象?