I have a Windows 7 64-bit machine with two separate applications running on the same machine. One application writes data via 4 TCP connections (same IP, different ports). The other application reads that data. All of this is internal to the machine, although it is hooked up to a network.

The data, about 8MB aggregate, gets written every second. Individual message sizes are anywhere from 50KB to ~60KB. 10-15 of these messages are sent on each socket once a second. This means that one of the connections is dumping 5Mbytes all at once (loosely speaking), every second.

I have set the following options:

Tcp1323Opts=1 
netsh int tcp set heuristics disabled

I used setsockopts to set the Receive buffer to 8Mbytes on the loaded connection and 2Mbytes on the connections with less of a data dump.

Finally, the questions:

  1. Is this the correct way to approach this? There are lots of docs out there for WinXP, but not so much for Win7.
  2. The 3 connections with less data are doing fine, but the 5Mbyte one occasionally either times out or errors out saying the system had to close the connection.
  3. I think from what I've read there is a 16MB limit on the receive window. Is this for all connections, or available for each connection?
  4. If per connection, can I set each connection to a different receive window size?
  5. And last but not least, I'm setting the transmit buffer the same as the receive buffer via setsockopts. Is this doing anything?
link|improve this question
Is this question about an application that you are programming? I'm thinking this question might need to be migrated to stackoverflow. – cmorse Dec 29 '11 at 17:13
feedback

Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

Your Answer

 
or
required, but never shown

Browse other questions tagged or ask your own question.