Forum: Ruby sending files over a network

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Pieter Breed (Guest)
on 2006-04-01 14:20
(Received via mailing list)
Hi All,

I am relatively new to Ruby and I am considering using it for a little
itch of my own I want to scratch. It deals with sending files over a
network, but in a one-computer-to-one-computer way, not swarming like
with torrents.

My question is two-fold: What is, in general, the better way of sending
files across a network like this. By better I mean appropriate for
files that may be both very long and very short? Some error checking
also needs to be done so the files don't corrupt. I realise this is not
really ruby specific, but bear with me please.

How would you do/implement this in Ruby? If I was more familiar with
either Ruby or network programming I could probably bootstrap my
knowledge, but it seems I just don't know enough.

Regards,
Pieter Breed
f3l (Guest)
on 2006-04-01 21:35
(Received via mailing list)
Pieter Breed wrote:
> Hi All,
>
> I am relatively new to Ruby and I am considering using it for a little
> itch of my own I want to scratch. It deals with sending files over a
> network, but in a one-computer-to-one-computer way, not swarming like
> with torrents.

why not useing ftp?

>
> My question is two-fold: What is, in general, the better way of sending
> files across a network like this. By better I mean appropriate for
> files that may be both very long and very short? Some error checking
> also needs to be done so the files don't corrupt. I realise this is not
> really ruby specific, but bear with me please.
>
> How would you do/implement this in Ruby?

u dont need to, its been done for you before, lots fo times, just find
one implementation that suits your needs, and stick to it.
Pieter Breed (Guest)
on 2006-04-02 02:17
(Received via mailing list)
Uhm, thanks... I didn't think of that...

actually I really meant to ask what I asked in the first place... Sorry
for being bitchy, but I your answer was kind of silly.

Pieter
unknown (Guest)
on 2006-04-02 02:32
(Received via mailing list)
On Sun, 2 Apr 2006, Pieter Breed wrote:

> Uhm, thanks... I didn't think of that...
>
> actually I really meant to ask what I asked in the first place... Sorry
> for being bitchy, but I your answer was kind of silly.
>
> Pieter

check out ruby-sendfile - you'll have a tough time getting faster.

regards.

-a
Konstantin Levinski (Guest)
on 2006-04-02 19:59
(Received via mailing list)
If you know how to work with files, and how to set up connections
(TCPServer/TCPSocket) you know enough to send a file over network with
Ruby. Performance will be network-limited, so don't worry too much
about it.

You can use MD5/SHA1 for additional error checking, for error checking,
tough TCP has this feature on its own.

pseudocode ( as in - not tested but with a couple of fixes should
probably work )

- sender:
name="file.txt"; len = File.new(name).stat.size.to_s
socket = TCPSocket.new('remote.host.org', 6666)
socket.puts name
socket.pits.len
socket.write File.read(name)
socket.close

- reciever:
socket = TCPServer.new('0.0.0.0', 6666).accept
name = socket.gets
len = socket.gets
File.open(name, "wb") { | fl | fl.write (socket.read len.to_i ) }
socket.close
---

HTH
Pieter Breed (Guest)
on 2006-04-03 00:14
(Received via mailing list)
Thanks Konstantin, that is really helpful and I will give it a bash

Regards,
Pieter
Konstantin Levinski (Guest)
on 2006-04-03 13:16
(Received via mailing list)
btw, depending on your requirements you might want to have a look at
http://rio.rubyforge.org/ -
 it gives IO, File, Dir and sevral others a simple consistent interface
- in case you want to work with directories and files and a lot
This topic is locked and can not be replied to.