如何将 TServerSocket 绑定到特定 IP 地址

How to Bind a TServerSocket to a specific IP address

有谁知道绑定 Delphi TServerSocket 组件以仅接受特定本地地址上的请求的方法吗?

服务器有多个 IP,但要求服务器应用程序仅在 运行.

时接受一个 IP 上的请求

TServerSocket 不会直接公开您要求的功能,但是可以通过一些变通方法实现。

您需要从 TServerSocket 派生一个新的 class 才能访问受保护的 TAbstractSocket.Address 属性。那是 TServerSocket 绑定到的值。由于 属性 通常无法访问,因此它仍然是一个空字符串,这与绑定到 0.0.0.0(又名 INADDR_ANY,即所有本地 IP)相同。

一旦您可以访问 Address 属性,您可以在激活服务器之前将其设置为您想要的任何 IP,服务器将相应地绑定。

例如:

type
  TServerSocketAccess = class(TServerSocket)
  end;

TServerSocketAccess(ServerSocket1).Address := '192.168.0.1';
ServerSocket1.Active := True;