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:
- Is this the correct way to approach this? There are lots of docs out there for WinXP, but not so much for Win7.
- 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.
- 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?
- If per connection, can I set each connection to a different receive window size?
- And last but not least, I'm setting the transmit buffer the same as the receive buffer via setsockopts. Is this doing anything?