首页 > 解决方案 > 在 Python3 中使用 RPyC 时,有没有办法分配或知道客户端机器正在使用的本地端口?

问题描述

我们可以在连接客户端时指定服务器 IP/端口:

c = rpyc.connect("127.0.0.1",port=18812)

但是,我想知道是否有一种方法可以指定客户端将使用哪个端口,或者我们是否可以确定客户端每次尝试连接到服务器时将使用哪个端口。

如果在服务器上启用了日志记录,则可以识别:

INFO:MASTERSERVER/18812:server started on [127.0.0.1]:18812
INFO:MASTERSERVER/18812:accepted ('127.0.0.1', 62372) with fd 664
INFO:MASTERSERVER/18812:welcome ('127.0.0.1', 62372)
INFO:MASTERSERVER/18812:goodbye ('127.0.0.1', 62372)

但是,我想知道是否有办法从客户端获取此信息。

标签: pythonpython-3.xclient-serverrpyc

解决方案


这是实现要求的一种方法:

import rpyc
conn = rpyc.connect("localhost", 18812)
socket = conn._channel.stream.sock
print(socket.getsockname()) # what you are looking for
print(socket.getpeername()) # extra information

这将打印出:

('127.0.0.1', 50086)
('127.0.0.1', 18812)

推荐阅读