Ruby TCPServer没有收听Google Cloud Platform上的端口

问题描述 投票:0回答:1

我得到了一份学校作业,要求我们练习一些套接字编程,所以我的计划是在Google Cloud Platform提供的VM上运行我的后端,并从本地计算机向它发送一些消息。但是,当我运行客户端代码时,它表示连接被拒绝。后来在云壳上用netstat -a进行了检查,它说我的程序甚至没有收听(当它在后台运行时)。

有人能帮我搞定吗?

My Google Cloud Platform Firewall rules here

服务器端代码:

require 'socket'

module WebsocketTest
  module_function

  def init
    @server = TCPServer.new('0.0.0.0', 8080)
    @running = false
  end

  def run
    STDERR.puts 'Server is running'
    @running = true

    while @running
      socket = @server.accept
      STDERR.puts 'Incoming Request'
      http_request = ''
      while (line = socket.gets) && (line != "\r\n")
        http_request += line
      end
      STDERR.puts http_request
      socket.close
    end
  end
end

WebsocketTest.init
WebsocketTest.run 

客户端代码:

require 'socket'

s = TCPSocket.new('External IP of the VM', 8080)
s.send('Hello World!', 0)
s.close

错误信息:

client.rb:3:in `initialize': No connection could be made because the target machine actively refused it. - connect(2) for "xxx.xxx.xxx.xxx" port 8080 (Errno::ECONNREFUSED)
ruby google-cloud-platform
1个回答
0
投票

好吧我搞清楚了,这可能听起来很愚蠢......我在GCP网页中使用Active Cloud Shell并连接到我的项目,这似乎是一个临时环境。后来我在“VM实例”面板中通过SSH连接到实例,获取OP运行的代码,一切顺利。

© www.soinside.com 2019 - 2024. All rights reserved.