我正在努力在Ruby中实现clamd守护进程的INSTREAM命令。 这是clamd
的文件@file = File.open("input.txt")
socket = TCPSocket.new(HOST, PORT)
#writing the command
socket.write("zINSTREAM\0")
#streaming the chunk
socket.write(1024) #size of chunk
socket.write(@file.read(1024)) #chunk of data
#end the streaming
socket.write(0)
puts "Reading from the scoket"
puts socket.recv(1024)
socket.close
但我总是收到错误响应“超出INSTREAM大小限制。错误” 我在这里做错了什么?
答案 0 :(得分:3)
经过长期的斗争,我找到了解决方案。
块的大小必须用network byte order
中的4字节无符号整数表示所以
socket.write(1024)
应该是
socket.write([1024].pack("N"))