Сценарий:Delphi - Мост два порта TCP
ПК1: (IP: 192.168.1.100) Delphi приложение, работающее 2 listenener в порту 5555 и в порту 80 Проблема: Применение установить ссылку как двусторонняя связь beteeen порт 80 и 5555.
PC2: (IP: 192.168.1.200) Delphi приложение работает веб-сервиса прослушивания в порту 8888. Проблема: Применение делает подключение к PC1 на порту 5555 и после этого устанавливает как -средняя линия связи между локальным портом 8888 и соединением с ПК1.
PC2: Webservice 8888 (Listen) - Не проблема
PC2: Разъем подключения к ПК1 порту 5555 - не проблема
PC2: TCP мост между Webservice и гнездом Connect (проблема)
PC1 : TidServer 5555 (Listen) - Не проблема
PC1: TidServer 80 (Listen) - Не проблема
PC1: TCP мост между 5555 и 80 (задача)
Я пришел далеко:
PC 2:
WSocketLocal Connect местного до 8888 (ок)
WSocketExt Подключение внешнего к PC1 порту 5555 (ок)
procedure TWebServForm.WSocketExtDataAvailable(Sender: TObject; ErrCode: Word);
begin
WSocketLocal.SendStr(WSocketExt.ReceiveStr);
end;
procedure TWebServForm.WSocketLocalDataAvailable(Sender: TObject;
ErrCode: Word);
begin
WSocketExt.SendStr(WSocketLocal.ReceiveStr);
end;
PC1:
IdTCPServer1 слушать 5555 (ок)
IdTCPServer2 слушать 80 (ok)
Следующие две процедуры работают, поэтому сценарий PC1 выполнен (работает).
procedure TMain.ExtClientDataAvailable(Sender: TObject; Error: Word);
begin
if Error <> 0 then exit;
with Sender as TClient do
begin
Rcvd := Rcvd + ReceiveStr;
if (RemoteSocket.State = wsConnected) and (Rcvd <> '') then
begin
WSocketServerLocal.Client[0].SendStr(Rcvd);
Rcvd := '';
end;
end;
end;
procedure TMain.LocalClientDataAvailable(Sender: TObject; Error: Word);
begin
if Error <> 0 then exit;
with Sender as TClient do
begin
Rcvd := Rcvd + ReceiveStr;
if (RemoteSocket.State = wsConnected) and (Rcvd <> '') then
begin
WSocketServerExt.Client[0].SendStr(Rcvd);
Rcvd := '';
end;
end;
end;
Я хочу, чтобы этот результат: На ПК1: В WebBrowser, http://127.0.0.1:80 показывает WebService из PC2 порта 8888
Я знаю, что есть и другие, и easyier способов сделать это, но я должен быть точно как я описал.
Как я могу сделать два «моста» и какие компоненты Delphi использовать?
Обновление: я выполнил мост TCP с двумя компонентами сервера, теперь мне нужно выполнить ту же операцию с двумя компонентами Connect.
Обновление: я решил, что два моста теперь работают с написанным кодом ... Но возникла новая проблема ... Когда веб-браузер подключается, он может одновременно создавать несколько подключений к порту, мой код поддерживает только одно соединение за раз. Я исследую это.
выглядит как домашнее задание в школе ... http://torry.net/quicksearchd.php?String=proxy&page=2 –
Нет, это не домашнее задание в школе;) Я видел на прокси, но в этой ситуации не подходит , - Спецификация об этом заключается в том, что мост на PC2 является обратным соединением, а также мостом. –
, который связал прокси для вас, является исходным кодом, который вы можете узнать из –