I've written a client and a server application that uses Winsock to communicate. While testing them, I had the client on my computer connecting to the server which was also running on my computer (effectively a loopback). Both applications worked fine with normal testing.
Then I passed my client onto a friend, who would test it by connecting to my server over the Internet (we have different ISPs). However, during testing I found that the server froze every time.
Now I know my TCP stream-handling code isn't that good, but I'd like to be able to test it without wasting my friend's time. Is there some kind of proxy server I can run which I can feed packets into as normal and will then gradually transfer the lot to the other application's socket, fragmenting packets and reducing throughput to simulate the high seas of the Internet, all on my PC?