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 new 関数に渡すことです。たとえば、彼らが言っていること:

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

したがって、あなたの場合、ソケットの名前は tcp_client (client_socket ではない) であるため、それを渡します。

于 2015-01-09T06:01:48.300 に答える