将Indy TidHttpServer与其中一个网卡绑定

时间:2013-03-20 17:37:47

标签: delphi http indy

我在delphi xe2上实现了一个使用Indy 10 TidHttpServer在局域网中运行良好的web服务。

我发现的问题是在一台带有2个网卡的计算机中,一个是常规网卡工作正常,另一个是虚拟网卡,用于将流量路由到连接到电话公司的x.25线路进行信用卡处理

如果服务器重新启动(我喜欢经常这样做),Windows首先挂载虚拟网卡,然后我的服务器以某种方式绑定它。我不明白它是如何工作的。

我从indy的文档中读到它应该绑定到所有ips,应该监听两个网络。然而,这没有发生。我基本上使用的是默认配置,但分配给8888的端口除外。

有没有办法从indy http服务器中排除这个内存?

如果可能,我正在寻找一个例子。

本地网络位于192. *范围内,虚拟网络位于187. *范围内。今天为了使它工作,我需要禁用虚拟网卡,加载我的服务器,然后再次启用虚拟网络。工作良好。但是如果重新启动,我需要再做一遍。

1 个答案:

答案 0 :(得分:2)

您可以在激活服务器之前手动添加和配置绑定,将服务器绑定到特定卡。一个基本的例子是这样的:

uses IdSocketHandle;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  SHandle: TIdSocketHandle;
begin
  TIdTCPServer1.Bindings.Clear; //make sure there's no other bindings
  SHandle := IdTCPServer1.Bindings.Add;
  SHandle.IP := '192.168.0.15';
  SHandle.Port := 3748;
  IdTCPServer1.Active := True;
end;

如您所见,该示例使用TIdTCPServer完成。它适用于任何TIdCustomTCPServer后代,包括TIdHTTPServer