1

我将构建一个多客户端/服务器系统。预计会这样工作:

  1. 客户端使用 TCP/IP 与服务器通信

  2. 当客户端与服务器建立连接时,客户端会发送一个命令字符串。当服务器接收到命令字符串时,它会解析它,执行所需的工作,然后向客户端发送响应。

  3. 当客户端关闭 TCP 连接时,服务器会销毁与该客户端相关的资源。

  4. 服务器是一个多线程程序。command receive、 command parse、 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我的问题是:当客户端关闭连接时如何销毁对象?

4

0 回答 0