2016-10-17 56 views

回答

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; 
+0

非常感謝雷米。此代碼正在成功更新服務器套接字地址值。但是,即使在將地址屬性明確設置爲IP後,服務器應用程序仍會對所有其他IP地址做出響應。你有什麼想法,爲什麼?是德爾福套接字限制嗎? – LastManStanding

+0

@LastMan只有當**服務器被激活時的地址爲空時,纔會發生**。監聽套接字被綁定到任何已設置的IP上,並且只能接受該IP上的連接。綁定到一個空白的「地址」允許任何IP上的連接。在設置「Active」爲true之前,您必須設置「Address」。 –

相關問題