I am developing a Windows proxy program where two TCP sockets, connected through different adapters are bridged by my program. That is, my program reads from one socket and writes to the other, and vice versa. Each socket is handled by its own thread. When one socket reads data it is queued for the other socket to write it. The problem I have is the case when one link runs at 100Mb and the other runs at 10Mb. I read data from the 100Mb link faster than I can write it to the 10Mb link. How can I “slow down” the faster connection so that it is essentially running at the slower link speed? Changing the faster link to a slower speed is not an option. –Thanks
I am developing a Windows proxy program where two TCP sockets, connected through different
Share
Create a fixed length queue between reading and writing threads. Block on the enqueue when queue is full and on dequeue when it’s empty. Regular semaphore or mutex/condition variable should work. Play with the queue size so the slower thread is always busy.