Туннелестроительство
т.е. есть сервер и две клиентские мащины. В классическом случае они должны соединяться на прямую. Но это не возможно, т.к. они могут находиться за НАТом. Направлениями стрелок показано направление коннектов.
Т.е. на стороне клиента 1 - открываем (локально) порт. Из приложения соединяемся с ним. Дальше передаем на сервер. Соединяемся. На стороне клиента 2 - открыт порт в приложении. Надо так-же соединится с сервером и передать то, что пришло на него от клиента 1 в приложение на клиенте 2.
Я так думаю - что это можно как-то сделать на Indy-компанентах, но пока только понял, как делать portmap. А как построить такую схему?
P.S. Если я правильно понял проблему. (:
Клиентов в общем случае может быть больше двух - но на каждую пару можно открывать свои порты (или не открывать - тогда надо сверху писать заголовок пакета, типа кому он предназначен).
Думал или через пару IdTunelMaster - IdTunelSlave (но так и не врубился - как работают эти компаненты). Или по - простому - IdTCPClient- IdTCPServer - с открытием порта и полным комированием контента, который на порт валится. Но может можно попроще?
я ж говорю - обычные сокеты рулят.Мнение конечно субъективное, но тем не менее - все компоненты типа Indy и т.п. это уже надстройка над обычными... Да и много лишнего кода эти компоненты с собой приносят в ехешник :) Здесь, по-моему, есть статейки на тему сетей - почитай, если затрудняешься писать руками...
если надо тунель - то google about VPN. только я не понимаю, зачем он тут нужен, если две программы будут обмениваться через сервер?
Решил пока попробовать по-простому IdTCPClient - IdTCPServer.
Эти компаненты уже использую в другой части проги - т.ч. бинарник потяжелеть (значительно) не должен.
Что делают TIdTunnelMaster - TIdTunnelSlave, кто-нибудь в двух словах расскажите. Применимы они тут или нет.
P.S. Спасибо за советы.