1

YAMLダンプの直後にYAMLを読み込めないのはなぜですか

次のコードを試しましたが、コンソールに「終了」印刷がありません

誰かが私に何が悪いのか教えてもらえますか?

ありがとうございます

サーバー側のルビーコード

require 'socket'
require 'yaml'
h = []
s = TCPServer.open('localhost',2200)
c = s.accept
loop do
    YAML.dump(h,c)
    YAML.load(c)
    puts "end"
end

クライアント側のルビーコード

require 'socket'
require 'yaml'
d = []
s = TCPSocket.open('localhost',2200)
loop do
    d = YAML.load(s)
    YAML.dump("client",s)
    puts "end"
end
4

1 に答える 1

1

YAML読み取るバイト数が事前にわからないため、可能な限り読み取ろうとし、永久に待機します。end_of_recordはありませんTCP/IP

require 'socket'
require 'yaml'
h = []
s = TCPServer.open('localhost',2200)
c = s.accept
loop do
    s = YAML.dump(h)
    c.write([s.length].pack("I"))
    c.write(s)
    length = c.read(4).unpack("I")[0]
    p YAML.load(c.read(length))
end



require 'socket'
require 'yaml'
d = []
c = TCPSocket.open('localhost',2200)
loop do
    length = c.read(4).unpack("I")[0]
    p YAML.load(c.read(length))
    s = YAML.dump("client")
    c.write([s.length].pack("I"))
    c.write(s)
end
于 2012-07-02T14:23:54.233 に答える