Если вам нужно только подключаться к удалённым хостам из программы (а не принимать входящие соединения), и если программа использует только TCP (а не UDP или другие протоколы), то достаточно соединение (сокет) за-bind-ить к конкретному сетевому интерфейсу или конкретному IP-адресу.
Этот способ универсален и прост, работает в Windows и Linux, не требует дополнительных настроек, помимо наличия маршрутов по умолчанию для всех интерфейсов (метрика значения не имеет).
То, что вам пишут выше, про маркировку пакетов и назначения конкретных маршрутов — альтернативные, более «правильные» способы, подходящие для более общих случаев, но сложные в настройке.