gpt4 book ai didi

ruby - SSLServer发生错误时显示客户端IP地址#accept

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:45 24 4
gpt4 key购买 nike

我用 ruby​​ 做了一个 TCP 服务器。版本如下。

  • ruby 2.3.1p112
  • openssl 2.0.4

代码如下。

context             = OpenSSL::SSL::SSLContext.new()
context.cert = OpenSSL::X509::Certificate.new(File.read(CERT_PATH))
context.key = OpenSSL::PKey::RSA.new(File.read(KEY_PATH))
context.ca_file = CERT_PATH
context.ssl_version = :TLSv1_2
tcp_server = TCPServer.new(PORT)
@ssl_server = OpenSSL::SSL::SSLServer.new(tcp_server, context)

loop do
Thread.abort_on_exception = true
begin
Thread.start(@ssl_server.accept) do |socket|
do_something
socket.close
end
rescue => e
ERROR_LOGGER.error e
exit
end
end

基本没问题,但是在执行@ssl_server.accept时偶尔会出现如下错误。

E, [2018-03-02T11:06:10.142500 #10116] 错误 -- : SSL_accept SYSCALL returned=5 errno=0 state=SSLv3 read client key exchange A (OpenSSL::SSL::SSLError)

我想知道是谁访问了这个错误。因此,我想在出错时显示访问源的ip地址。请告诉我谁知道该怎么做。谢谢!

最佳答案

Socket#accept返回套接字描述符和 addr_info,所以你可以这样做:

loop do
Thread.abort_on_exception = true
begin
_fd, @addr_info = @ssl_server.accept
Thread.start(_fd) do |socket|
do_something
socket.close
end
rescue => e
ERROR_LOGGER.error e
ERROR_LOGGER.info "AddrInfo: #{@addr_info}"
exit
end
end

关于ruby - SSLServer发生错误时显示客户端IP地址#accept,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49063076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com