首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找zerorpc服务器的绑定端口

查找zerorpc服务器的绑定端口
EN

Stack Overflow用户
提问于 2014-11-28 18:34:22
回答 1查看 163关注 0票数 2

当我将zerorpc服务器实例绑定到随机端口时,如下所示:

代码语言:javascript
复制
s = zerorpc.Server(SomeClass())
s.bind('tcp://127.0.0.1:0')

如何找出服务器实际绑定到哪个端口?另一个通向相同目标的问题是:如何访问zerorpc-server的底层ZMQ套接字?

EN

回答 1

Stack Overflow用户

发布于 2014-12-02 17:46:16

为了找到socket对象,我编写了一个函数来递归地搜索vars(Server_object)中的任何ZMQ对象:

代码语言:javascript
复制
def find_sockets(obj, thiskey, keys_before, results):
    if 'zmq.' in str(type(obj)):
        results.append(keys_before + [thiskey])
    try:
        vars(obj)
    except TypeError:
        return
    for key in vars(obj):
        find_sockets(vars(obj)[key], key, keys_before + [thiskey], results)

s = zerorpc.Server(Dummy())
s.bind('tcp://*:0')
results = []
find_sockets(s, '', [], results)

我找到了以下socket对象:

代码语言:javascript
复制
server_object
├─ _multiplexer
│  ├─ _events
│  │  ├ _send
│  │  │ └─ _socket
│  │  ├─ _recv
│  │  │  └─ _socket
│  │  └─ _socket
├─ _events
│  ├ _send
│  │ └─ _socket
│  ├─ _recv
│  │  └─ _socket
│  └─ _socket

绑定之后,对这些套接字对象中的任何一个调用getsockopt(zmq.LAST_ENDPOINT),就会得到连接的端点和端口。

然而,这可能不是zeroRPC开发人员的意图,也不能保证将来会正常工作。因此,为了连接到一个随机的空闲端口,我现在要做的就是获取一个随机端口,尝试绑定到它,然后重复这个过程,直到没有抛出zmq.ZMQError为止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27186797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档