class DRb::DRbSSLSocket

用于 SSL 套接字的 DRb 协议

通过 SSL 的 DRb 套接字的 URI 为:drbssl://<主机>:<端口>?<选项>。选项是可选的

公共类方法

new(uri, soc, config, is_established) 点击以切换源代码

创建一个 DRb::DRbSSLSocket 实例。

uri 是我们连接到的 URI。soc 是我们绑定的 tcp 套接字。config 是我们的配置。可以是 Hash 或 SSLConfigis_established 是一个布尔值,表示 soc 当前是否已建立连接

这是基于 DRb 协议自动调用的。

调用父类方法
# File drb-2.2.1/lib/drb/ssl.rb, line 314
def initialize(uri, soc, config, is_established)
  @ssl = is_established ? soc : nil
  super(uri, soc.to_io, config)
end
open(uri, config) 点击以切换源代码

返回一个 DRb::DRbSSLSocket 实例,作为客户端连接,并已建立 SSL 连接。这是从 DRb::start_service 或连接到远程对象时调用的

DRb.start_service 'drbssl://127.0.0.1:0', front, config

uri 是我们连接到的 URI,如上面的 'drbssl://127.0.0.1:0'config 是我们的配置。可以是 Hash 或 DRb::DRbSSLSocket::SSLConfig

# File drb-2.2.1/lib/drb/ssl.rb, line 259
def self.open(uri, config)
  host, port, = parse_uri(uri)
  soc = TCPSocket.open(host, port)
  ssl_conf = SSLConfig::new(config)
  ssl_conf.setup_ssl_context
  ssl = ssl_conf.connect(soc)
  self.new(uri, ssl, ssl_conf, true)
end
open_server(uri, config) 点击以切换源代码

返回一个 DRb::DRbSSLSocket 实例,作为服务器端连接,并已建立 SSL 连接。这是从 DRb::start_service 或连接到远程对象时调用的

DRb.start_service 'drbssl://127.0.0.1:0', front, config

uri 是我们连接到的 URI,如上面的 'drbssl://127.0.0.1:0'config 是我们的配置。可以是 Hash 或 DRb::DRbSSLSocket::SSLConfig

# File drb-2.2.1/lib/drb/ssl.rb, line 277
def self.open_server(uri, config)
  uri = 'drbssl://:0' unless uri
  host, port, = parse_uri(uri)
  if host.size == 0
    host = getservername
    soc = open_server_inaddr_any(host, port)
  else
    soc = TCPServer.open(host, port)
  end
  port = soc.addr[1] if port == 0
  @uri = "drbssl://#{host}:#{port}"

  ssl_conf = SSLConfig.new(config)
  ssl_conf.setup_certificate
  ssl_conf.setup_ssl_context
  self.new(@uri, soc, ssl_conf, false)
end