PC1:(IP:192.168.1.100): 应用建立一个双向通信链路,在端口5555和端口80 问题运行2 listenener Delphi应用程序beteeen端口80和5555
PC2:(IP:192.168.1.200)在听端口8888 问题上运行的Web服务 Delphi应用程序: 应用使得在端口5555到PC1的连接,并且建立了一个两后本地端口8888和PC1连接之间的通信链路。
PC2:web服务8888(监听) - 不是一个问题
PC2:插座连接到PC1端口5555 - 不是一个问题
PC2:在web服务和所述插座连接(问题)之间的TCP桥
PC1 :TidServer 5555(听) - 这不是个问题
PC1:TidServer 80(听) - 这不是个问题
PC1:TCP大桥5555和80(问题)
之间我已经走到这一步:
PC 2:
WSocketLocal连接本地到8888(OK)
WSocketExt连接外部到PC1端口5555(OK)
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(OK)
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;
我想这样的结果: 在PC1:在一个网页浏览器,http://127.0.0.1:80显示PC2口的Webservice的8888
我知道有其他和easyier方法可以做到这一点,但我必须要准确正如我所描述的那样。
我该如何制作两个“桥”,以及我应该使用哪些Delphi组件?
更新:我已经完成了具有两个服务器组件的TCP桥,现在我必须对两个连接组件执行相同的操作。
更新:我解决了这个问题,这两个网桥现在正在使用书面代码......但是出现了一个新问题......当网页浏览器连接时,它可以同时建立多个连接到一个端口,我的代码一次只支持一个连接。我会调查这一点。
看起来像学校作业... http://torry.net/quicksearchd.php?String=proxy&page=2 –
不,它不是学校作业;)我已经看到代理,但是在这种情况下是不可suatable 。 - 关于这一点的特点是,PC2的桥是一个反向连接,也是一座桥。 –
为您链接的代理是您可以从中学习到的源代码 –