关于使用ZMQ进行python和c ++通信的问题

时间:2018-11-30 06:50:05

标签: python c++ zeromq

我使用与c ++通信的python脚本,我的c ++辅助代码如下:

 class CTraderHandler : public CThostFtdcTraderSpi
 {
 public:
     void orderinsert(const char* BuyOrSell)
     {
        ...dosth()
     }  
     void OnRtnTrade(CThostFtdcTradeField *pTrade)
     {
        printf("OnRtnTrade\n");
     }
 };

 int main(int argc, char *argv[])
 {
 CTraderHandler *trader = new CTraderHandler();

 zmq::context_t context (1);
 zmq::socket_t socket (context, ZMQ_REP);
 socket.bind ("tcp://*:5555");

while (true) {
    zmq::message_t request;

    //  Wait for next request from client
    socket.recv (&request);
    std::string rpl = std::string(static_cast<char*>(request.data()), request.size());

    trader->orderinsert(rpl.c_str());

    //  Send reply back to client
    zmq::message_t reply (5);
    memcpy (reply.data (), "World", 5);
    socket.send (reply);
 }

 }

python脚本为:

context = zmq.Context()
print ("Connecting to server...")
socket = context.socket(zmq.REQ)
socket.connect ("tcp://localhost:5555")

s="abc"
socket.send_string(s)
print ("done send StartBuy :", s)
message = socket.recv()
print(message)

在c ++ recv python发送数据之后,您可以看到它调用CTraderHandler类的orderinsert函数,然后回复python

但问题是:在CTraderHandler类中,在执行orderinsert之后,它可能会调用OnRtnTrade事件,我想在c ++答复python时,还包括从OnRtnTrade事件获得的一些信息。

现在我不知道如何设计代码来完成它。

0 个答案:

没有答案