Ruby Eventmachine:转义接收到的二进制数据

Ruby Eventmachine:转义接收到的二进制数据,ruby,binary,eventmachine,Ruby,Binary,Eventmachine,我将使用EventMachine教程作为发送/接收二进制数据的起点。示例代码是: #!/usr/bin/env ruby require 'rubygems' # or use Bundler.setup require 'eventmachine' class EchoServer < EM::Connection def receive_data(data) puts data send_data(data) end end EventMachine.ru

我将使用EventMachine教程作为发送/接收二进制数据的起点。示例代码是:

#!/usr/bin/env ruby

require 'rubygems' # or use Bundler.setup
require 'eventmachine'

class EchoServer < EM::Connection
  def receive_data(data)
    puts data
    send_data(data)
  end
end

EventMachine.run do
  # hit Control + C to stop
  Signal.trap("INT")  { EventMachine.stop }
  Signal.trap("TERM") { EventMachine.stop }

  EventMachine.start_server("0.0.0.0", 10000, EchoServer)
end
我将以下数据发送到EM服务器:

\x17\xEB\xB3\b\x05\x00\x00\x00\x01\x00\x00\x89Bo\xAF
EM打印出这个:

\\x17\\xEB\\xB3\\b\\x05\\x00\\x00\\x00\\x01\\x00\\x00\\x89Bo\\xAF\r\n
出于某种原因,它正在跳出斜杠并将
\r\n
添加到接收的数据中


如何阻止EM转义数据并只接受发送给它的原始二进制文件?

结果证明罪魁祸首是telnet。我用netcat解决了这个问题

命令来自此问题:

\\x17\\xEB\\xB3\\b\\x05\\x00\\x00\\x00\\x01\\x00\\x00\\x89Bo\\xAF\r\n
echo "\x17\xEB\xB3\b\x05\x00\x00\x00\x01\x00\x00\x89Bo\xAF" | nc localhost 10000