C++套接字协议设计问题(环包含)

C++套接字协议设计问题(环包含),c++,include,boost-asio,C++,Include,Boost Asio,我有两个类,mpqs_客户端和客户端协议。mpqs_客户端类处理到服务器的Boost套接字连接,该服务器发送和接收具有特定格式的消息。在接收到消息后,它调用类client_协议中的静态方法parse_message..,该方法应该分析接收到的消息并执行一些相应的操作 给定一些特定的输入,parse_消息方法需要将一些数据发送回服务器。如前所述,这是通过类mpqs_客户端实现的。所以我可以,从mpqs_客户端,把这个传递给parse_消息。。在客户端协议中。然而,这导致了两个类之间的双向关联关系。

我有两个类,mpqs_客户端和客户端协议。mpqs_客户端类处理到服务器的Boost套接字连接,该服务器发送和接收具有特定格式的消息。在接收到消息后,它调用类client_协议中的静态方法parse_message..,该方法应该分析接收到的消息并执行一些相应的操作

给定一些特定的输入,parse_消息方法需要将一些数据发送回服务器。如前所述,这是通过类mpqs_客户端实现的。所以我可以,从mpqs_客户端,把这个传递给parse_消息。。在客户端协议中。然而,这导致了两个类之间的双向关联关系。我认为不可取的东西。而且,为了实现这一点,我需要在每一项中包含另一项,这给了我极大的痛苦

我认为这更多的是一个设计问题。这里最好的解决方案是什么

代码发布在下面

mpqs_类客户端:

#include "mpqs_client.h"

mpqs_client::mpqs_client(boost::asio::io_service& io_service, tcp::resolver::iterator endpoint_iterator) : io_service_(io_service), socket_(io_service) {
    ...
}
...
void mpqs_client::write(const network_message& msg) {
    io_service_.post(boost::bind(&mpqs_client::do_write, this, msg));
}
类客户端协议:

#include "../network_message.hpp"
#include "../protocol_consts.h"

class client_protocol {
public:
    static void parse_message(network_message& msg, mpqs_sieve **instance_, mpqs_client &client_) { 
        ...                 
        switch (type) {         
            case MPQS_DATA: 
                ...         
                break;
            case POLYNOMIAL_DATA:
                ...
                break;
            default:
                break;
        }
    }

在C++中为MPQSB客户机提取一个接口抽象基础调用,并将其实例传递到clitNI协议中——实例实际上是真正的MPQSB客户端对象,但是接口避免了双向依赖性。然后使用指向它的指针。。