类 OpenSSL::SSL::SSLServer
SSLServer
代表一个带有安全套接字层的 TCP/IP 服务器套接字。
属性
start_immediately[RW]
当为 true 时,accept
的行为与 TCPServer#accept 完全相同。
公共类方法
new(svr, ctx) 点击切换源代码
创建一个新的 SSLServer
实例。
-
srv 是 TCPServer 的实例。
-
ctx 是
OpenSSL::SSL::SSLContext
的实例。
# File 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 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 openssl/lib/openssl/ssl.rb, line 540 def close @svr.close end
listen(backlog=Socket::SOMAXCONN) 点击切换源代码
有关详细信息,请参见 TCPServer#listen。
# File openssl/lib/openssl/ssl.rb, line 509 def listen(backlog=Socket::SOMAXCONN) @svr.listen(backlog) end
shutdown(how=Socket::SHUT_RDWR) 点击切换源代码
有关详细信息,请参见 BasicSocket#shutdown。
# File openssl/lib/openssl/ssl.rb, line 514 def shutdown(how=Socket::SHUT_RDWR) @svr.shutdown(how) end
to_io() 点击切换源代码
返回初始化时传递给 SSLServer
的 TCPServer。
# File openssl/lib/openssl/ssl.rb, line 504 def to_io @svr end