【发布时间】:2016-10-17 19:26:54
【问题描述】:
有谁知道绑定 Delphi TServerSocket 组件以仅接受特定本地地址上的请求的任何方法?
服务器有多个 IP,但它要求服务器应用程序仅在运行时接受一个 IP 上的请求。
【问题讨论】:
标签: delphi ip-address serversocket
有谁知道绑定 Delphi TServerSocket 组件以仅接受特定本地地址上的请求的任何方法?
服务器有多个 IP,但它要求服务器应用程序仅在运行时接受一个 IP 上的请求。
【问题讨论】:
标签: delphi ip-address serversocket
TServerSocket 不会直接公开您要求的功能,但是通过一些变通方法是可行的。
您需要从TServerSocket 派生一个新类才能访问受保护的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;
【讨论】:
Address 为空白时才会发生。侦听套接字绑定到已设置的任何 IP,并且只能接受该 IP 上的连接。绑定到空白Address 允许在任何 IP 上进行连接。在将 Active 设置为 true 之前,您必须设置 Address。