[Mono-list] BITS with Mono?

Zac Bowling zac at zacbowling.com
Wed May 3 13:08:24 EDT 2006


I seen one in Java that monitored network activity with a JNI wrapper
for a bittorent client. It would involve looking up and querying your
network interfaces which would be different most certainly from platform
to platform, and writing one that way.

However that implementation is only good for one client. The thing with
BITS is that it's a single process queuing service, so if multiple
clients want to use it, they can all get a fraction of the idle
bandwidth to pool together. However, the idea is totally possible and I
would love to see an implementation written. It would take a few native
hooks for each platform and some skill to make a shared daemon that all
the client processes queue up with over some type of IPC. Not a
difficult concept at all, just nobody has done it yet :-)

Some things to think about:
* error control (what if the bandwidth picks up again, do you drop the
connection? how do you let the client lib handle that?)
* should be like a socket proxy or just purely handle http? (are you
going to proxy any type of socket for the client, or are you going to
support purely an http implementation? both have trade offs and
considerations.. things like FTP and HTTP can be restarted mid stream
with some servers so you can pick up where you left off. You could even
go the route of writing a transaction like wrapper and handling only
request queue messages)
* security (pretty simple if done correctly, but you don't want to make
it an open proxy like the first BITS version basically was in Windows
2000)

Hope that helps (and maybe inspires) :-)

Zac Bowling 
http://www.zacbowling.com/

 
On Wed, 2006-05-03 at 11:28 +0200, Ympostor wrote:
> Does anyone know if it could be possible to write a multi-platform 
> implementation of the "Background Intelligent Transfer Service" (BITS) 
> [1] technology so as to use it with a full managed API inside our Mono 
> applications?
> 
> The coolest thing I see from this technology is the use of idle 
> bandwidth exclusively for downloading packets.
> 
> Regards
> 



More information about the Mono-list mailing list