public:
typedef boost::signal<void (BYTE *buffer, int length)> IPCDataRecive_Signal;
typedef IPCDataRecive_Signal::slot_type IPCDataRecive_Slot;
typedef boost::signals::connection IPCDataRecive_Conn;
private:
IPCDataRecive_Signal signal;
BYTE *data_buf_rece;
virtual IPCDataRecive_Conn AddListener(IPCDataRecive_Slot slot) = 0;
virtual IPCDataRecive_Conn AddListener(IPCDataRecive_Slot slot);
data_buf_rece = new BYTE[buffer_length_rece];
INetCommunicate::IPCDataRecive_Conn TCPServerSingle::AddListener(IPCDataRecive_Slot slot)
{
return signal.connect(slot);
}
signal(data_buf_rece, msg_size);
neter = NetCommFactory::GetSingleServer(RUNTIME_DATAPREPARE_PORT);
neter->AddListener(boost::bind(&SplitWork::ReceData, this, _1, _2));
void ReceData(BYTE *data, int count);
服务器端通过一个线程侦听接受数据放在data_buf_rece里面,然后通过signal(data_buf_rece, msg_size)告诉neter->AddListener(boost::bind(&SplitWork::ReceData, this, _1, _2)),void ReceData(BYTE *data, int count)就可以对data_buf_rece进行处理了。