2013-08-07 57 views
0

我使用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.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

原來是罪魁禍首是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