I know, I am looking at what Shasta has done first...
This is a little different from ordinary P2P code. Let me explain:
1.) The inbound client does NOT know the size of the file being transferred to it.
2.) The inbound client can be busy with a current transfer, but, it must automatically except any transfers
I am confident it can be done after doing some research. Still, the R&D is a little heavy and I tend to procrastinate when I have too much R&D.
Here is the extent of my system.net.sockets experience if any one has vb2k10 and wants to take a look. If you just have .net framework 4.0 you can take a look too. Had down to the bin/debug/ folders and run server and client exe files. The only update I did to the server side for a school project was remove a client from server when server receives an 'exit' command: