我启动了一个 UNIX 服务器,代码如下:
module UNIX_Server
def receive_data(data)
send_data "testing"
end
def unbind
puts "[server] client disconnected."
end
end
EM::run {
EM::start_unix_domain_server('/tmp/file.sock', UNIX_Server)
}
这工作正常,我正在尝试使用 Ruby 1.8.7 连接到它 UNIX 套接字:
s = UNIXSocket.new
s.puts "test"
s.gets
这里的问题是我的 gets 方法似乎挂起并且客户端 仅当我执行 Ctrl-C 并终止服务器时才获取数据。我是什么 这里不见了?
最佳答案
IO#gets
一次读取一整行。您的客户端正在等待服务器从不发送的换行符。
使用
send_data "testing\n" # note the newline character
在您的服务器中应该可以工作,或者您可以使用 IO#getc
循环中。
关于ruby - 可以将原始 ruby 套接字连接到事件机 UNIX 服务器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9363697/