python - 在 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)
但是,我想知道是否有办法从客户端获取此信息。
解决方案
这是实现要求的一种方法:
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)
推荐阅读
- java - Hibernate 删除用户和 user_type 而不是只删除用户
- python - 如果在读取 csv 时使用 index_col = 0,则无法使用 pandas 删除列
- php - 带有 PHP 的语言切换器,具有简短语法的二维数组
- python - 字典大小在增加一个元素时减小
- css - xpath在r中进行网络抓取时返回空文本
- c# - Xaml - 如何使用 ViewModel 中的 ImageSource
- django - 为什么传递给 urls 的 django 用户名参数直接连接以及如何防止它
- javascript - 如何解决 Google Chrome 中 Roboto 字体加载的问题?
- python - 与线性表达式相乘时找到非线性表达式的根
- c - How can I reset a struct in a function?