【问题标题】:How could I retrieve and store random UUID-s in ZeroMQ sockets?如何在 ZeroMQ 套接字中检索和存储随机 UUID-s?
【发布时间】:2014-09-18 08:59:20
【问题描述】:

我需要在多个客户端之间进行通信。当我尝试运行文件(多个终端)时,我得到了相同的身份。所以我让路由器套接字自动设置UUID。但是我发现我不能使用该身份存储在服务器上以在多个客户端之间进行路由。

如何处理多个客户 ID?

我正在尝试构建一个异步聊天服务器。我正在遵循每个客户端的方法,经销商套接字连接到服务器( ROUTER-type sockets )。然后服务器提取客户端 ID(手动设置)并相应地读取消息和路由。

#include "zhelpers.hpp"
#include <iostream>
#include <string>
int main(void) {
    zmq::context_t context(1);
    zmq::socket_t backend (context, ZMQ_DEALER);
    backend.setsockopt( ZMQ_IDENTITY, "mal2", 4);
    backend.connect("tcp://localhost:5559");

    std::string input;
    std::cout <<"you are joinning" << std::endl;

    while(1){
        getline (std::cin, input);
        s_send (backend, input);
        zmq::pollitem_t items [] = {
            { backend, 0, ZMQ_POLLIN, 0 }
        };
        zmq::poll (items, 1, -1);
        if (items [0].revents & ZMQ_POLLIN) {
            std::string identity = s_recv (backend);
            std::string request = s_recv (backend);//receive reply back from router which might be other client
            std::cout<<"identity="<<identity<<"reques="<<request<<std::endl;
        }   //ending if                               
    }//ending while
    return 0;
}

【问题讨论】:

    标签: sockets zeromq


    【解决方案1】:

    纪念品

    几十年来已经证明,宁愿根据所有收集到的需求来设计系统,即在编码之前,反之亦然。

    这样,您的分析将在决定消息传递和信令层之前列出所有需求,避免出现“而且我想添加这个和那个......”的情况

    UUID

    如果您决定在每个客户端创建一次性或持久性UUID-s,您将面临确保时间唯一性和随机性的挑战。

    如果您决定从 ChatSERVER 端分配 UUID-s,除了聊天传输之外,您还需要一个额外的信令层。

    如果没有您肯定有的其他要求(或迟早会意识到即时面对他们),“我将如何处理多个客户 ID”的答案是无法回答的

    时间就是金钱

    如上所述,好的项目始于适当而彻底的需求工程和验证。与“基于 Aha 的故障排除响应式工程”相比,产品编码所需的时间最短。

    【讨论】:

    • 感谢您的回复。实际上我正在尝试使用多线程构建客户端聊天服务器。我这样做是为了学习。客户需要相互交流,但客户聊天对所有人都是可见的。
    • 我需要一个路由器来接收消息,另一个路由器来重定向消息。但我无法检索 UUIDS
    • 您是如何决定从技术上生成 UUID 的?
    • s_set_id(dealersocket 或 req socket)。它将标识设置为 64F6 D716。所以每个客户都有相同的身份,这就是我无法识别多个客户来执行我预期的解决方案的问题。我愿意接受你的建议
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2021-06-15
    • 2020-07-03
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多