For some time I have been using a utility called forcebindip It's purpose is to start an application and force it to use a specific network adapter. So if you wanted to start IE on an adapter that is not the default, you can start it with this commandline utility and bind it to another interface, it will then use that internet connection.

For ease of use I created a GUI wrapper for it in the past, but I'm interested to know what technologies it might use, with the goal of creating my own with possible improvements.

Does anyone have ideas on what I should be researcing here?

Hi, it was about 3 years ago now, but i used a combination of getifaddrs and SO_BINDTODEVICE to force udp traffic through a specific NIC ignoring the routing table. i was working with embedded linux 2.6.32 but i believe there is similar functionality on windows, bsd and mac as well and would be suprised if there is not. In terms of wrapping sockets i only know of a windows approach which is relying on the winsock spi architecture, google the function WSCInstallProvider() and associated functions. essentially you can install a method that will be called between the winsock api in the application and the os service provider. I dont know for sure but i imagine it would allow you to change the bind address of socket calls.