我正在使用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
我使用telent连接到EM服务器
telent -8 localhost:10000
我将以下数据发送到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转义数据并接受发送给它的原始二进制文件?
答案 0 :(得分:0)
原来,罪魁祸首是telnet。我用netcat解决了这个问题。
命令来自这个问题:How to escape hex values in netcat
echo "\x17\xEB\xB3\b\x05\x00\x00\x00\x01\x00\x00\x89Bo\xAF" | nc localhost 10000