0

这是来自 Ruby Docs (1.9.3) 的示例代码

require 'socket'
require 'openssl'

tcp_client = TCPSocket.new 'localhost', 5000
ssl_client = OpenSSL::SSL::SSLSocket.new client_socket, context
ssl_client.connect

ssl_client.puts "hello server!"
puts ssl_client.gets

用 Ruby (1.9.3) 运行它会给我这个错误:

try.rb:4:in `<main>': undefined local variable or method `client_socket' for main:Object (NameError)

为什么 ?

4

3 回答 3

2

你有要求吗?

require 'openssl'
于 2013-01-29T19:48:25.857 回答
2

你没有定义client_socket

ssl_client = OpenSSL::SSL::SSLSocket.new client_socket, context

根据文档

从 io 创建一个新的 SSL 套接字,该套接字必须是一个真正的 ruby​​ 对象(不是响应读/写的类似 IO 的对象。

于 2013-01-29T20:19:43.433 回答
0

将 client_socket 更改为 tcp_client。

如果您正确阅读文档,您会发现这是一个错字。

您正在做的是将 tcp 客户端套接字传递给 openssl 新函数。例如,他们在说什么:

OpenSSL::SSL::SSLSocket.new name_of_your_socket, name_of_your_context

因此,在您的情况下,您的套接字名称是 tcp_client (而不是 client_socket),因此请传入。

于 2015-01-09T06:01:48.300 回答