Back Connect Server
Алгоритм работы:
Программа слушает порт на сервере (к примеру 6666)
Клиенты подключаются к данному порту, сервер в свою очередь принимает подключение клиента, открывает на прослушивание новый порт и организует "прозрачный" туннель между клиентом и открытым портом для него (а точнее программой которая будет подключатся к этому порту).
Пример:
Клиент подключается на порт 6666, сервер открывает на прослушивание порт 5555 и связывает его с клиентом, далее какая то программа подключается на сервер на порт 5555 и соответственно все отправляемые ею запросы перенаправляются на клиента и соответственно все ответы клиента перенаправляются программе.
Для след подключенного клиента открывает порт 5556 и т.д.
Требования:
- На асинхронных сокетах
- Возможность получения листа активных клиентов в виде: 'IP сервера' 'Port сервера для клиента' 'IP клиента'. Соответственно лист обновляется при каждом подключении или отключении клиента
- Отключение клиента при обрыве связи, по таймауту и т.п.
- Рациональное потребление процессора и памяти, т.к. один сервер может обслуживать тысячи клиентов
- Рекомендовано на С++, выслушаю ваши предложения
- ОС для работы: Linux
- без потерь памяти :)
- возможны небольшие доработки и корректировки
Сроки очень сжаты. Необходимо срочно.
Просьба писать только имеющих опыт в разработке подобного ПО.
Возможно у кого то уже есть готовое решение.
Оставляйте сроки и цены.