2

RubyでTCPを介してオブジェクトを送信して「メッセージ」を送信しようとしていますが、クライアントクラスに何も表示されません。私は何が間違っているのですか?

私のメッセージクラス(私が送信しようとしているもの)

class Message

  attr_reader :host_type, :command, :params  
  attr_accessor :host_type, :command, :params

  def initialize(host_type, command, params)
    @host_type = host_type
    @command = command
    @params = params
  end
end

私の「サーバー」クラス

require 'socket' 
require_relative 'message'               


class TCP_connection 

  def start_listening
    puts "listening"
    socket = TCPServer.open(2000) 
    loop {                          
      Thread.start(socket.accept) do |message|
        puts message.command
      end
    }
  end

  def send_message
    hostname = 'localhost'
    port = 2000

    s = TCPSocket.open(hostname, port)

    message = Message.new("PARAM A", "PARAM B", "PARAM C")

    s.print(message)

    s.close 
  end

end
4

2 に答える 2

0

オブジェクトをシリアル化する必要があります。これを行う最も移植性の高い方法は、YAML を使用することです。まず、yamlライブラリを要求します。

require "yaml"

より、 に置き換えs.print(message)ますs.print(YAML.dump(message))

于 2013-02-24T02:07:12.073 に答える