繁体   English   中英

python xmlrpc.client.ServerProxy - 如何指定本地端口范围

[英]python xmlrpc.client.ServerProxy - how to specify local port range

是否有一种简单的方法来指定xml-rpc客户端连接应该来源的源端口范围?

假设客户端和xml-rpc服务器之间有一个防火墙,它只从特定的套接字(由IP和端口范围定义)将流量传递给服务器。

默认情况下, xmlrpc.client.ServerProxy允许操作系统决定使用哪个本地端口。 因此,每个xml-rpc调用都会打开与源自其自己的套接字的服务器的连接,该套接字保持TIME_WAIT状态,直到超时到期。 在Windows上netstat -b显示了这样的连接:

C:\tmp>netstat -b | grep 51000
  TCP    ZIBI:51000             localhost:1552         TIME_WAIT    0
  TCP    ZIBI:51000             localhost:1562         TIME_WAIT    0
  TCP    ZIBI:51000             localhost:1561         TIME_WAIT    0
  TCP    ZIBI:51000             localhost:1553         TIME_WAIT    0
  TCP    ZIBI:51000             localhost:1559         TIME_WAIT    0
  TCP    ZIBI:51000             localhost:1558         TIME_WAIT    0
  TCP    ZIBI:51000             localhost:1557         TIME_WAIT    0

我想要实现的是端口的可配置范围(上例中的15XX) xmlrpc.client.ServerProxy在服务器上调用rpc方法时将使用的范围。

:是主机和端口之间的分隔符。

netstat -a | grep :15* 

从ServerProxy调用后:

cli = xmlrpclib.ServerProxy(..)

向下

<httplib.py>

class HTTPConnection:

  _http_vsn = 11
  _http_vsn_str = 'HTTP/1.1'

  response_class = HTTPResponse
  default_port = HTTP_PORT
  auto_open = 1
  debuglevel = 0
  strict = 0

  def __init__(self, host, port=None, strict=None,
             timeout=socket._GLOBAL_DEFAULT_TIMEOUT, source_address=None):

我发现source_address kw用于指定我要查找的内容。 针对source_address的额外堆栈溢出搜索导致线程: Python:是否可以使用xmlrpclib设置clientport? 它定义了自定义传输指定源地址,并且更多地回答了我的问题; 至少它是实现端口范围的一个很好的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM