【问题标题】:send hex value to client side via ruby socket通过 ruby​​ 套接字将十六进制值发送到客户端
【发布时间】:2012-08-17 10:49:10
【问题描述】:

我正在创建一个套接字服务器。此服务器正在处理十六进制值。

我能够建立与服务器的连接。但无法读取客户端十六进制值,也无法将十六进制值发送到客户端。

require "socket"


def listenserver (server)
 @buff1 =[160, 124]
 client = server.accept
 puts  "#{client.inspect} is accepted"
 client.print "0x%02x" % @buff1[0]
 client.print"0x%02x" % @buff1[1]
 puts "#{@buff1.inspect}"
 puts "0x%02x" % @buff1[0]
 client.close
 puts "#{client} is gone"
end

server = TCPServer.new('x.x.x.x', 12345)
loop do
 puts "Started TCPServer"
 listenserver(server)

end

【问题讨论】:

  • 请添加数组 @buff 和您用于测试的示例 url
  • 服务器是私有的,但重点是当我们打印十六进制值时,它以字符串的形式到达客户端。我已经更新了buff1 arrey,请看一下

标签: ruby sockets hex


【解决方案1】:

您要查找的是Array.packString.unpack

Ruby 文档中的示例代码:

对于Array.pack

a = [ "a", "b", "c" ]  
a.pack("A3A3A3")  
=> "a  b c "

Sting.unpack

"\xfe\xff\xfe\xff".unpack('sS')
=> [-2, 65534]

"whole".unpack('xax2aX2aX1aX2a')
=> ["h", "e", "l", "l", "o"]

【讨论】:

    猜你喜欢
    • 2017-03-26
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多