问题
i want to send raw bytes using Rubys TCPSocket-Class. Has someone a good example?
I've tried it in this way, but it does not work :(
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"
thanks :)
回答1:
Try using a "*" after the format directive to eat all the elements in the list:
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*')
There are lots of neat tricks possible with string#format so it's worth studying the documentation.
来源:https://stackoverflow.com/questions/9326424/simplest-way-to-send-raw-byte-arrays-using-rubys-tcpsocket-class