Самый простой способ отправки необработанных байтовых массивов с использованием Ruby TCPSocket-Class - PullRequest
2 голосов
/ 17 февраля 2012

Я хочу отправить необработанные байты, используя Rubys TCPSocket-Class.У кого-нибудь есть хороший пример?

Я пробовал таким образом, но он не работает: (

require 'socket'

host = '192.168.0.80'
port = 102
s = TCPSocket.new(host, port)

    s.write [0x03, 0x00, 0x00, 0x16,
             0x11, 0xE0, 0x00, 0x00, 0x00, 
             0x01, 0x00, 0xC1, 0x02, 0x02, 
             0x02, 0xC2, 0x02, 0x02, 0x02, 
             0xC0, 0x01, 0x0A ].pack('C')
    puts s.read
    s.close

puts "exit"

спасибо :)

1 Ответ

8 голосов
/ 17 февраля 2012

Попробуйте использовать "*" после директивы формата, чтобы съесть все элементы в списке:

s.write [0x03, 0x00, 0x00, 0x16,
         0x11, 0xE0, 0x00, 0x00, 0x00, 
         0x01, 0x00, 0xC1, 0x02, 0x02, 
         0x02, 0xC2, 0x02, 0x02, 0x02, 
         0xC0, 0x01, 0x0A ].pack('C*')

Существует множество полезных трюков в формате string #, поэтому стоит изучить документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...