gpt4 book ai didi

ruby - 为什么 ruby​​ 无法在我的 Fedora 20 机器上打开 TCPSocket?

转载 作者:可可西里 更新时间:2023-11-01 02:44:55 34 4
gpt4 key购买 nike

我在 Fedora 20 上使用 ruby​​ 2.1.0。我有来自 ruby-doc 的以下代码.

require 'socket'

s = TCPSocket.new 'localhost', 2000

while line = s.gets # Read lines from socket
puts line # and print them
end

s.close # close socket when done

Ruby 抛出以下错误:

client.rb:3:in `initialize': Connection refused - connect(2) for "localhost" port 2000     (Errno::ECONNREFUSED)
from client.rb:3:in `new'
from client.rb:3:in `<main>'

失败的原因可能是什么?我的意思是,代码应该绝对有效,它非常简单,来自公认的 ruby​​ 教程网页。我想问题出在我的操作系统上,但我该如何让它正常工作?

最佳答案

套接字是双向通信 channel 的端点。套接字可以在进程内、同一台机器上的进程之间或不同大陆的进程之间进行通信。
一个简单的客户端:

require 'socket'      # Sockets are in standard library

hostname = 'localhost'
port = 2000

s = TCPSocket.open(hostname, port)

while line = s.gets # Read lines from the socket
puts line.chop # And print with platform line terminator
end
s.close

现在调用TCPServer.open hostname, port函数为你的服务指定一个端口并创建一个TCPServer对象。
一个简单的服务器:

require 'socket'               # Get sockets from stdlib

server = TCPServer.open(2000) # Socket to listen on port 2000
loop { # Servers run forever
client = server.accept # Wait for a client to connect
client.puts(Time.now.ctime) # Send the time to the client
client.puts "Closing the connection. Bye!"
client.close # Disconnect from the client
}

阅读doc

关于ruby - 为什么 ruby​​ 无法在我的 Fedora 20 机器上打开 TCPSocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21381064/

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