1

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 サイズ制限を超えました。エラー」というエラー応答を受け取ります。

4

1 に答える 1

3

長い闘争の後、私はこれに対する解決策を見つけました。

チャンクのサイズは、ネットワーク バイト順で 4 バイトの符号なし整数で表す必要があります

そう

socket.write(1024)

する必要があります

socket.write([1024].pack("N"))
于 2012-09-24T21:24:10.297 に答える