TServerSocket
не напрямую раскрывает функцию, о которой вы просите, однако это можно сделать с небольшим обходным решением.
Чтобы получить доступ к охраняемому объекту TAbstractSocket.Address
, вам необходимо получить новый класс от TServerSocket
. Это значение, которое привязывается к TServerSocket
. Поскольку свойство обычно не доступно, оно остается пустой строкой, которая совпадает с привязкой к 0.0.0.0
(aka INADDR_ANY
, то есть ко всем локальным IP-адресам).
Как только вы сможете получить доступ к свойству Address
, вы можете установить его на любой IP-адрес, который вы хотите до активации сервера, и сервер будет привязываться соответствующим образом.
Например:
type
TServerSocketAccess = class(TServerSocket)
end;
TServerSocketAccess(ServerSocket1).Address := '192.168.0.1';
ServerSocket1.Active := True;
спасибо Реми. Этот код успешно обновляет значение адреса сервера. Однако серверное приложение продолжает отвечать на все другие IP-адреса даже после того, как свойство address явно установлено на IP. Вы знаете, почему? Это ограничение на Delphi? – LastManStanding
@ LastManStanding то, что вы описываете, может случиться ** только когда ** «Адрес» пуст во время активации сервера. Слуховой сокет привязан к любому IP-адресу и может принимать только соединения на этом IP-адресе. Привязка к пустому «Адресу» позволяет подключать любые IP-адреса. Вы должны установить «Адрес», прежде чем устанавливать значение «Актив» на true. –