Можливо, Ви мене не правильно зрозуміли.
Я мав на увазі, що є 2 потоки. Перший потік пише дані з початку до кінця, другий потім - з кінця до початку. Але, перший потік використовує одне підключення, а другий потік - друге підключення.
Тобто, про єдине TCP на різні IP мови не йдеться.
Цей же принцип закладений до всіх інтернет-ботів. Треба в веб-девелоперів запитати, як то вони на PHP реалізовують. Хоча, не обов'язково PHP, але, думаю, його для цієї задачі використовують найчастіше.
Ну от наприклад, я читав недавно про гугл бот. Він може використовувати для завантаження pdf-файлу одночасно 10 IP-адрес. Власники сайтів жаліються, що вони встановлюють обмеження на швидкість з однієї IP-адреси, а бот таким чином обходить це обмеження. І тому виникає "атака" на сайт. Тому власники сайту блокують деякі IP-адреси ботів.
Тому я не безпідставно думаю, що таку програму якось можна зробити. І я чомусь думаю, що така програма, як зазвичай буває, в демо-версії (без забаганок) займе пару сотень рядків коду.
Можливо, я дуже погано знаю мережі. Але от може є така функція на C++, за допомогою якої можна використовувати лише задане цією функцією підключення. І це з включенням того, що інші підключення продовжують бути підключеними до системи.
Але ж, Windows такого скоріше не дозволить? Тому я і писав в самому початку теми, що треба писати драйвер, який буде "виймати" з системи Windows пристрій і передавати його в програму.
Для прикладу, Ви коли небудь використовували VirtualBox? Так от, в ньому є функція "захоплення USB-пристроїв". Увага: для цього в систему встановлюється спеціальний драйвер. Тобто, цей драйвер "перенаправляє" пристрій із системи в віртуальну машину. Увага: після захоплення пристрою, в основній системі його не видно, в диспетчері пристроїв немає.
Розумієте, що я хочу сказати?
Далі. Візмемо саму просту систему Linux. Наприклад, Ubuntu 12. До неї можна підключити модем або роутер або принтер і вона його "побачить" і "почне з ним працювати" без драйверів. Тобто, існують якісь стандартні драйвери. А це означає, що якщо я знайду такий стандартний драйвер, написаний на мові C++, або DLL-стандартний драйвер, то я зможу прив'язати цей драйвер до мого драйверу, який буде "виймати" пристрої з системи і таким чином, я зможу напряму з програмного коду, мимо системи, використовувати підключення.
Тобто, виходить, що мені треба розбиратися у вихідному коді VirtualBox, щоб створити драйвер, який буде "витягати" пристрої з системи та дізнатися про "стандартний" драйвер для модемів. Якщо перше я можливо зроблю (колись), то друге я не знаю навіть як почати. Дуже дивно, що це питання ще не піднімалося.