Firebird 事件和防火墙问题 (TIBEvents)

Mar*_*lli 2 delphi firebird

我将使用Firebird Events的强大功能以及带有 TIBEvents 组件的 delphi 应用程序。

问题是防火墙,并不是每次都有正确的角色,当我尝试注册事件时,应用程序停止响应,我必须等待......

我能怎么做?

我还尝试在单独的线程中调用寄存器函数,但结果相同。

function RegisterEvents(data : Pointer) : Integer;
begin
  with Form1 do begin
    DBOspitiEvent.Registered := true; 
  end;
end; //<-- AFTER THIS, APPLICATION IS BLOCKED (for a while)

procedure TForm1.Button2Click(Sender: TObject);
var
  ThreadId : Cardinal;
  ThreadHandle : Integer;
begin
  ThreadHandle := BeginThread(nil,0,@RegisterEvents,nil,0,ThreadId);
  if ThreadHandle = 0
    then ShowMessage('Error');
end;
Run Code Online (Sandbox Code Playgroud)

Mar*_*eel 5

对于事件,客户端需要建立一个单独的连接,默认情况下 Firebird 使用随机端口。与防火墙结合使用时,这会导致问题,因为例如,不允许使用该端口。

您可以将 Firebird 配置为使用固定端口,方法是编辑 firebird.conf 并将其设置RemoteAuxPort为固定值(例如 3051),然后重新启动 Firebird。然后,您可以配置防火墙以允许此端口。

另请参阅如何使用防火墙配置事件?

  • @MarcoAndreolli 如果您无法指导您的客户为事件配置他们的环境,那么我认为唯一的选择就是不使用事件。 (2认同)