William Tell
May 5th, 2008, 10:34 AM
I am writing a C# application to use two or more network connections (NIC's) on a single client to a remote server application for parallel file upload - to increase upload throughput. I am using Windows XP.
I bind one socket to one local NIC (say NIC1) and then the remote server IP and port and then another socket to NIC 2 and the same remote server and port. This works most of the time - the TCP connection gets established OK.
However when I try to send data on NIC1, 95% of the time I get TCP checksum errors (viewed via Wireshark) on the packet at each end and hence the remote server does not respond correctly. The other NIC 2 typically functions OK with no checksum errors and data can be sent OK.
Bizzarely, if I disconnect NIC2, I can get a perfect connection on NIC1 and no checksum errors. Even more bizzarely - sometimes (5% of the time) data can be sent on both NIC1 and NIC2 correctly.
This does not appear to be a problem with the connection, as I never get any checksum errors with just NIC 1 connected.
Neither NIC uses checksum offloading. Each NIC is on a different subnet - 192.168.0 and 192.168.2
The same problem appears on a different PC and when using a simple echo client-server console program, connecting alternately to the server via NIC1 and then NIC2.
Is it possible to local bind sockets successfully in Windows XP? If so how do I do it?
If not, can it be done on Vista/Windows Server 2003/8 etc.?
I bind one socket to one local NIC (say NIC1) and then the remote server IP and port and then another socket to NIC 2 and the same remote server and port. This works most of the time - the TCP connection gets established OK.
However when I try to send data on NIC1, 95% of the time I get TCP checksum errors (viewed via Wireshark) on the packet at each end and hence the remote server does not respond correctly. The other NIC 2 typically functions OK with no checksum errors and data can be sent OK.
Bizzarely, if I disconnect NIC2, I can get a perfect connection on NIC1 and no checksum errors. Even more bizzarely - sometimes (5% of the time) data can be sent on both NIC1 and NIC2 correctly.
This does not appear to be a problem with the connection, as I never get any checksum errors with just NIC 1 connected.
Neither NIC uses checksum offloading. Each NIC is on a different subnet - 192.168.0 and 192.168.2
The same problem appears on a different PC and when using a simple echo client-server console program, connecting alternately to the server via NIC1 and then NIC2.
Is it possible to local bind sockets successfully in Windows XP? If so how do I do it?
If not, can it be done on Vista/Windows Server 2003/8 etc.?