代码之家  ›  专栏  ›  技术社区  ›  Mark M

我正在寻找一个使用ms visual c++express的简单的c++套接字接口

  •  0
  • Mark M  · 技术社区  · 14 年前

    C++中有一个死的简单套接字接口,我可以与MS VisualStudio Express版一起使用吗?我知道这里有Winsock库,我想我正在寻找一个更简单的包装器。

    我认为java.net库非常简单,但是,我必须使用ms vc++express。有什么等价物吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   yasouser    14 年前

    退房 Boost Asio .

        2
  •  3
  •   joshperry    14 年前

    我以前经常在套接字级别工作,如果这是您需要的,那么yes boost::asio很好,如果有点混乱的话。

    但是,如果您只需要在进程之间(在同一台或不同的机器上)传递数据,那么我将在堆栈上再往前看一点 ØMQ ;看看从另一个进程接收“消息”有多容易:

    zmq::context_t ctx(1);
    
    zmq::socket_t sock(ctx, ZMQ_REQ);
    sock.connect("tcp://localhost:5555");
    
    zmq::message_t msg;
    while(sock.recv(&msg)) {
        std::string s(static_cast<char*>(msg.data()), msg.size());
        std::cout << s;
    }
    

    发送同样简单。

    zmq::context_t ctx(1);
    
    zmq::socket_t sock(ctx, ZMQ_REP);
    sock.bind("tcp://*:5555");
    
    std::string s = "Hello you!";
    zmq::message_t msg(s.size());
    memcpy(msg.data(), s.data(), s.size());
    
    while(true) {
        sock.send(msg);
        sleep(1);
    }
    

    ZeroMQ非常轻量级,负责连接、重新连接、传输、帧等…您所需要的只是您的“消息”负载,您希望它显示在管道的另一端(在本例中,我们只是使用简单的字符串)。

    它还处理一些更高级的消息传递技术,如pub-sub(同一消息的多个接收者)。