是否有人知道如何绑定Delphi TServerSocket组件以仅接受特定本地地址的请求?
服务器有多个IP,但要求服务器应用程序仅在其运行时接受一个IP上的请求。
答案 0 :(得分:5)
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;