Форум: "Сети";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];
ВнизКак это называется? Найти похожие ветки
← →
AnatV (2007-12-12 11:57) [0]Мне это не приснилось? Видел когда-то такой пример, что делался некий туннель, смысл которого сводился к тому, что на компьютере запускалась программа и она все входящие соединения на некий порт локального адреса перебрасывала на другой адрес. Ну вроде того, что например мы указываем в почтовом клиенте адрес localhost:1234 а все соединения приходящие перебрасывались на mail.maildomain.com:4321. При этом это не было отдельным mail-сервром и mail-клиентом в программе. Видел я такое когда-то очень давно кажется в примерах для Indy. Такое существует, если да, то как это называется?
← →
Anatoly Podgoretsky © (2007-12-12 12:08) [1]Виртуальный сервер, прокси-сервер, порт форвардинг.
← →
Сергей М. © (2007-12-12 12:18) [2]
> AnatV (12.12.07 11:57)
Поясни, каков прикладной смысл ожидается тобой в такой "переброске" ?
От этого и решение зависит.
← →
MetalFan © (2007-12-12 12:47) [3]http туннель например?
как работает:
1. локальный сервер(ЛС) принимает http запросы(пакеты), упаковывает(и возможно зашифровыват).
2. ЛС отсылает пакеты на некий внешний сервер(ВС) в и-нете
3. ВС распаковывает запрос посылает по нужному адресу
4. ВС принимается ответ, упаковывает, пересылает ЛС
5. ЛС распаковывает ответ, отдает локальному клиенту.
таким образом локальному клиенту (fe:браузер) работа с внешним сервером (http) получается прозрачной.
для чего используется: например для обхода на работе запрета доступа к нек.сайтам
← →
AnatV (2007-12-12 13:00) [4]Посмотрел в интернете - кажется нашел название - это Port Mapping было, в инди кажется и был такой класс.
Но меня интересует сам процесс этого. Задача такая, нужно отловить пакет - и исправить в нем допустим 5 байт, все остальное оставить как есть.
Если представить абстрактно сам такой процесс, то это: отдельно сервер, отдельно клиент - и сервер принимает все подключения и перебрасывает данные на уже подключенный клиентский сокет, ну и наоборот - это так?
← →
Eraser © (2007-12-12 15:04) [5]
> AnatV (12.12.07 11:57)
вот пример на Indy
// Port Mapping.
OutboundClient := TIdTCPClient.Create(Self);
try
OutboundClient.Host := ; // IP.
OutboundClient.Port := ; // Port.
OutboundClient.ConnectTimeout := DEFAULT_CONNECTION_TIMEOUT;
OutboundClient.ReadTimeout := DEFAULT_READ_TIMEOUT;
OutboundClient.Connect;
OutboundClient.Socket.UseNagle := False;
while AContext.Connection.Connected do
begin
AContext.Connection.IOHandler.CheckForDataOnSource(1);
FNetData := AContext.Connection.IOHandler.InputBufferAsString;
if Length(FNetData) > 0 then
begin
OutboundClient.IOHandler.Write(FNetData);
end;
OutboundClient.IOHandler.CheckForDataOnSource(1);
FNetData := OutboundClient.IOHandler.InputBufferAsString;
if Length(FNetData) > 0 then
begin
AContext.Connection.IOHandler.Write(FNetData);
end;
end;
finally
OutboundClient.Free;
end;
← →
Eraser © (2007-12-12 15:04) [6]естесственно данный код нужно выполнять в OnExecute сервера.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c