1

嗨,我看到了将二进制文本文件从客户端传输到服务器以及从服务器传输到客户端的代码。但是我可以在使用 Ruby 的套接字编程中将 mp3 格式或任何音频文件从客户端传输到服务器吗?!

我尝试了以下代码服务器端

file = open('/pentest/windows/songs/temp.mp3', "rb") 
fileContent = file.read 
client.puts(fileContent)

客户端:

sock = TCPSocket.open(host, port) 
data = sock.read 
destFile = File.open('/tmp/temp.mp3', 'wb') 
destFile.print data 
destFile.close 

它没有成功..你能建议吗

4

2 回答 2

0

尝试这个,

在客户端

        require 'socket'
        SIZE = 1024 * 1024 * 10
        TCPSocket.open('127.0.0.1', 12345) do |socket| 
          File.open('c:/file.mp3', 'rb') do |file|
              while chunk = file.read(SIZE)
                socket.write(chunk)
              end
          end
        end  

在服务器中

         require 'socket'
         require 'benchmark'
         SIZE = 1024 * 1024 * 10
         server =  TCPServer.new("127.0.0.1", 12345)
         puts "Server listening..."            
         client = server.accept       
         time = Benchmark.realtime do
           File.open('c:/file.mp3', 'w') do |file|
             while chunk = client.read(SIZE)
               file.write(chunk)
             end
         end
        end
于 2012-09-29T19:23:41.840 回答
0

是的。mp3 文件无论如何都是二进制格式。您可以通过套接字传输的数据类型没有任何限制。

于 2012-09-22T07:04:33.483 回答