我在delphi xe2上实现了一个webservice,它使用indy 10 tidhttpserver在局域网中运行得非常好。
我发现的问题是一台电脑有两个网卡,一个是正常工作的网卡,另一个是虚拟网卡,它将流量路由到连接到电话公司的X.25线路,以便进行信用卡处理。
如果服务器重新启动(我喜欢经常这样做),windows会先安装虚拟nic,我的服务器会以某种方式绑定到它。我一点也不明白它是怎么工作的。
我从indy的文档上看到它应该绑定到所有ip,并且应该监听两个网络。然而,这并没有发生。我基本上使用默认配置,除了分配给8888的端口。
有没有办法从indy http服务器中排除这个nic?
如果可能的话,我正在找一个例子。
本地网络在192.*范围内,虚拟网卡在187.*范围内。今天要让它工作,我需要禁用虚拟网卡,加载我的服务器,然后再次启用虚拟网卡。工作正常。但如果重新启动,我需要再做一次。

最佳答案

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

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

10-04 23:05