2014-01-12 105 views
1

我有一個java網絡服務器和Ruby網絡客戶端通過套接字進行通信 我在Ruby中使用TCPSocket 客戶端向服務器請求某個wav文件我可以發送請求,收到一個文本流 ,但我不知道如何通過套接字收到一個wav文件,並把它寫從Ruby中的字節流接收wav文件

 require 'socket' 
     require 'timeout' 
     require 'wavefile' 
     include WaveFile 

    def recvwav 
     data_socket=TCPSocket.open(hostname, port) 
     data_socket.puts text 
     begin 
     writer = Writer.new("my_file.wav", Format.new(:mono, :pcm_16, 44100)) 
     timeout(10) do 
      writer.write(data_socket.recv(100)) 
     end 
     rescue Timeout::Error 
     puts "Timed out!" 
     end 
    end 
+1

漂亮您收到文本流的方式與您收到二進制流的方式大致相同,分享一些代碼,人們可能會幫助您 – bbozo

+0

我將我的代碼添加到問題中 – Mostafa

回答

1

讓我的問題解決了,但寫文件直接,這是我的代碼

data_socket=TCPSocket.open(hostname, port) 
    #send your request 

    somefile = File.open("file_name.wav", "wb") 
    somefile.write(data_socket.readlines.join) 
    somefile.close