0

バイナリ データの送受信を実験するための出発点として 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サーバーへの接続にtelentを使用しています

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 がデータをエスケープするのを止めて、送信された生のバイナリだけを受け入れるにはどうすればよいですか?

4

1 に答える 1

0

犯人はtelnetであることが判明しました。netcatを使用してこれを解決しました。

コマンドはこの質問からのものです: netcat で 16 進値をエスケープする方法

echo "\x17\xEB\xB3\b\x05\x00\x00\x00\x01\x00\x00\x89Bo\xAF" | nc localhost 10000
于 2013-08-10T03:41:51.940 に答える