Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Windows
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2017, 15:56   #1
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 671
По умолчанию Перенаправить входящее tcp подключение на другой порт

Здравствуйте.
Задача такая: имеем три программы п1, п2 и п3, все запущены на одном пк. п3 создаёт tcp сокет 127.0.0.1:10 и ожидает на нём подключения (слушает его). п2 тоже создаёт tcp сокет и слушает его 127.0.0.1:11. п1 создаёт tcp сокет 127.0.0.1:12 и делает connect() к п2. задача п2 перебросить запрос на подключение от себя к п3 и дальше слушать свой порт.

Реализуемо ли в таком виде (т.е. связаться п1 с п2, запросить адрес п3 и подключиться к нему - не вариант. п1 не должен ничего знать о перенаправлении)? Меня конкретная реализация не интересует, достаточно псевдокода с названиями функций.
220Volt вне форума Ответить с цитированием
Старый 10.01.2017, 16:16   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

п2 - это ваша программа или сторонняя?
Если ваша, то никаких проблем...
waleri вне форума Ответить с цитированием
Старый 10.01.2017, 16:19   #3
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 671
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
п2 - это ваша программа или сторонняя?
Если ваша, то никаких проблем...
Да, все мои. Валерий, если не трудно, можно псевдокод (дейстивий п2). Нужен план чтения msdn.
220Volt вне форума Ответить с цитированием
Старый 10.01.2017, 16:52   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Порядок более-менее такой:

socket() - Создаем сокет
listen() - Начинам слушать
select() - Ждем входящее подключение и вообще всякие I/O действия
accept() - Принимаем вызов
connect() - Конектимся дальше
read() - Читам данные
write() - Пишем данные

Надо поддерживать много сокетов паралельно.
Самое трудное будет понять select()
Вместо select() можно юзать потоки - проще будет.
Проще наверно взять готове решение и допилить напильником...

Ref:
http://www.vakuumverpackt.de/tcptunnel/
waleri вне форума Ответить с цитированием
Старый 10.01.2017, 17:16   #5
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 671
По умолчанию

Я правильно понимаю, что по этой схеме п2 будет пересылать данные на п3? Т.е. если закрыть п2, то связь между п1 и п3 пропадёт?
220Volt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CentOS Как перенаправить подключение к одному порту на другой? alexchromets Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 1 14.11.2013 06:09
Подключение миши через USB порт tito0000 Общие вопросы C/C++ 3 01.05.2013 09:54
С++Buelder-Необходимо реализовать подключение к устройству (com-порт, TCP-сокет admin_vrn C/C++ Сетевое программирование 0 21.11.2012 00:52
Не получается создать удалённое сетевое подключение между двумя компами по протоколу TCP anyx Свободное общение 3 31.05.2011 20:55
Перенаправить поддомен сайта на другой ip с помощью DNS xGroupers Свободное общение 6 27.03.2008 23:52