如何使用ruby在socket编程中将mp3文件从客户端传输到服务器

时间:2012-09-22 06:34:45

标签: ruby sockets

您好我见过将二进制文本文件从客户端传输到服务器以及从服务器传输到客户端的代码。但是我可以使用Ruby在socket编程中将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 

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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