1
有沒有人知道任何方式來綁定Delphi TServerSocket組件來接受僅在特定本地地址上的請求?如何將TServerSocket綁定到特定的IP地址
服務器有幾個IP,但它要求服務器應用程序僅在其運行時接受一個IP上的請求。
有沒有人知道任何方式來綁定Delphi TServerSocket組件來接受僅在特定本地地址上的請求?如何將TServerSocket綁定到特定的IP地址
服務器有幾個IP,但它要求服務器應用程序僅在其運行時接受一個IP上的請求。
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;
非常感謝雷米。此代碼正在成功更新服務器套接字地址值。但是,即使在將地址屬性明確設置爲IP後,服務器應用程序仍會對所有其他IP地址做出響應。你有什麼想法,爲什麼?是德爾福套接字限制嗎? – LastManStanding
@LastMan只有當**服務器被激活時的地址爲空時,纔會發生**。監聽套接字被綁定到任何已設置的IP上,並且只能接受該IP上的連接。綁定到一個空白的「地址」允許任何IP上的連接。在設置「Active」爲true之前,您必須設置「Address」。 –