类 OpenSSL::SSL::SSLServer

SSLServer 代表一个带有安全套接字层的 TCP/IP 服务器套接字。

属性

start_immediately[RW]

当为真时,accept 的工作方式与 TCPServer#accept 完全相同。

公共类方法

new(svr, ctx) 点击切换源代码

创建一个新的 SSLServer 实例。

# File ext/openssl/lib/openssl/ssl.rb, line 491
def initialize(svr, ctx)
  @svr = svr
  @ctx = ctx
  unless ctx.session_id_context
    # see #6137 - session id may not exceed 32 bytes
    prng = ::Random.new($0.hash)
    session_id = prng.bytes(16).unpack1('H*')
    @ctx.session_id_context = session_id
  end
  @start_immediately = true
end

公共实例方法

accept() 点击切换源代码

工作方式类似于 TCPServer#accept.

# File ext/openssl/lib/openssl/ssl.rb, line 519
def accept
  # Socket#accept returns [socket, addrinfo].
  # TCPServer#accept returns a socket.
  # The following comma strips addrinfo.
  sock, = @svr.accept
  begin
    ssl = OpenSSL::SSL::SSLSocket.new(sock, @ctx)
    ssl.sync_close = true
    ssl.accept if @start_immediately
    ssl
  rescue Exception => ex
    if ssl
      ssl.close
    else
      sock.close
    end
    raise ex
  end
end
close() 点击切换源代码

有关详细信息,请参见 IO#close.

# File ext/openssl/lib/openssl/ssl.rb, line 540
def close
  @svr.close
end
listen(backlog=Socket::SOMAXCONN) 点击切换源代码

有关详细信息,请参见 TCPServer#listen.

# File ext/openssl/lib/openssl/ssl.rb, line 509
def listen(backlog=Socket::SOMAXCONN)
  @svr.listen(backlog)
end
shutdown(how=Socket::SHUT_RDWR) 点击切换源代码

有关详细信息,请参见 BasicSocket#shutdown.

# File ext/openssl/lib/openssl/ssl.rb, line 514
def shutdown(how=Socket::SHUT_RDWR)
  @svr.shutdown(how)
end
to_io() 点击切换源代码

返回初始化时传递给 SSLServerTCPServer.

# File ext/openssl/lib/openssl/ssl.rb, line 504
def to_io
  @svr
end