OpenSSL::SSL::SSLServer
class OpenSSL::SSL::SSLServer
父类:ObjectIncluded modules:OpenSSL::SSL::SocketForwarder
SSLServer表示带有安全套接字层的TCP / IP服务器套接字。
属性
start_immediatelyRW
如果属实,则接受与TCPServer#accept完全相同的作品
公共类方法
new(svr, ctx) 显示源
创建一个SSLServer的新实例。
srv
是TCPServer的一个实例。
ctx
是OpenSSL :: SSL :: SSLContext的一个实例。
# File ext/openssl/lib/openssl/ssl.rb, line 345
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).unpack('H*')[0]
@ctx.session_id_context = session_id
end
@start_immediately = true
end
公共实例方法
accept() 显示源
与TCPServer#accept类似。
# File ext/openssl/lib/openssl/ssl.rb, line 373
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#关闭。
# File ext/openssl/lib/openssl/ssl.rb, line 394
def close
@svr.close
end
listen(backlog=5)显示源
请参阅TCPServer#以获取详细信息。
# File ext/openssl/lib/openssl/ssl.rb, line 363
def listen(backlog=5)
@svr.listen(backlog)
end
shutdown(how=Socket::SHUT_RDWR) 显示源
有关详细信息,请参阅BasicSocket#shutdown。
# File ext/openssl/lib/openssl/ssl.rb, line 368
def shutdown(how=Socket::SHUT_RDWR)
@svr.shutdown(how)
end
to_io() 显示源
初始化时,返回传递给SSLServer的TCPServer。
# File ext/openssl/lib/openssl/ssl.rb, line 358
def to_io
@svr
end