You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何触发ZeroMQ的zmq.EVENT_HANDSHAKE_FAILED_PROTOCOL错误?

如何触发ZeroMQ的zmq.EVENT_HANDSHAKE_FAILED_PROTOCOL错误?

嘿,我刚好有过类似的测试需求,给你几个简单易操作的方法,能快速触发这个事件来验证你的回调逻辑:

  • 方法一:用非ZeroMQ服务端对接ZeroMQ客户端
    这是最容易实现的方式:

    1. 先写个简单的普通TCP服务器(不用ZeroMQ),比如用Python标准库开个监听端口的服务,代码大概是这样:
    import socket
    
    # 启动一个普通TCP服务器,监听本地5555端口
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind(("127.0.0.1", 5555))
    server_socket.listen(1)
    print("普通TCP服务器已启动,等待连接...")
    conn, addr = server_socket.accept()
    conn.close()
    
    1. 然后用你的ZeroMQ客户端去连接这个tcp://127.0.0.1:5555端口。因为对方不是ZeroMQ服务,无法完成ZeroMQ的握手协议协商,客户端这边就会立刻触发zmq.EVENT_HANDSHAKE_FAILED_PROTOCOL事件。
  • 方法二:强制使用不兼容的ZeroMQ协议版本
    ZeroMQ不同版本的协议可能不兼容,你可以手动指定客户端和服务端使用不匹配的协议版本:

    1. 服务端用默认的新版本协议(比如ZMQ 4.x)启动一个套接字,比如zmq.REP绑定端口。
    2. 客户端在创建套接字后,强制设置一个老旧的协议版本,比如:
    import zmq
    
    context = zmq.Context()
    client = context.socket(zmq.REQ)
    # 强制设置为ZMQ 3.x的协议版本,和服务端的4.x不兼容
    client.setsockopt(zmq.PROTOCOL_VERSION, 3)
    client.connect("tcp://127.0.0.1:5555")
    

    这样客户端在尝试握手时,因为协议版本不匹配,就会触发目标事件。

这两种方法都能快速触发你要测试的事件,完全不用纠结复杂场景,足够验证你的回调逻辑啦。

备注:内容来源于stack exchange,提问作者jasonsf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:04:29