From: Robert Klemme Date: 2009-05-09T17:40:04+09:00 Subject: Re: File over tcp? with out using net/ftp On 09.05.2009 10:03, Philippe Chotard wrote: > Bigmac Turdsplash wrote: >> I have been doing a lot of google'n trying to find example code for >> sending files threw the socket... I would really like to see some >> exmaple code for the client and server... im clueless... > > Hi Bigmac, here is a simple exemple you can begin with. A few remarks: > * Client (sends the file) : > require 'socket' > file = File.new('file.jpg') > fileContent = file.read The file handle is not closed properly. These two lines above can be replaced by fileContent = File.read('file.jpg') > sock = TCPSocket.open('localhost', 2000) > sock.print fileContent I'd rather use sock.write here as this is the more low level output operation. > sock.close > > * Server (receives the file) : > require 'socket' > sock = TCPServer.open(2000) > con = sock.accept > msg = con.read > destFile = File.new('file-received.jpg', 'w') > destFile.print msg > destFile.close Again, I'd rather use #write instead of #print here. And use the block form of File.open. Some more general remarks: depending on operating systems involved files should probably opened rather in binary mode than text mode. Then, as files can grow quite large, your approach (i.e. reading the whole file into memory before writing it) is likely to fail for large files. Usually a solution with small chunks is better. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/