I've created a simple test application to test data transfer rates when spooling files via remoting and get very strange results.
The client can either fetch a file from the server by calling a remote method
int ReadBuffer(int transferID, ref byte buf); until the file has been spooled completely or upload a file to the server by calling the remote method
void WriteBuffer(int transferID, int len, byte buf); until all blocks have been tranferred.
Basically what you have to do to spool a file in one direction or the other - can't get any easier, can it?
When I try this in a LAN environment, transfer is as fast as one would expect, but when used over the internet, the results are completely different.
One PC (client) has an ADSL connection: 3072kbit/s download, 384kbit/s upload, the other one (server) has a 2Mbit line up- and downstream.
I had expected the real transfer rates to reflect the asymmetric transfer rates, but upload AND download give me about 30KB/sec, although download should be a lot faster.
The weird thing is:
When I run the server program on the client PC and the client program on the server PC, then the transfer rate server PC -> client PC is up to 74KB/sec!
Copying files with Explorer is as fast as one would expect: ~35KB/sec upload and ~107KB/sec download...
Has someone experienced something similar and knows what the reason could be - or even better - what can I do to get the maximum transfer rates?
Black holes are the places where god divided by 0...