用Delphi XE和winsock的單元inet_addr返回-1本地主機
我有以下代碼:
var
fHost: AnsiString;
begin
inet_addr(PAnsiChar(fhost));
fHost
可以是IP地址或主機名。
當fhost = '127.0.0.1'
它工作正常但是,當fHost = 'localhost'
調用失敗並返回-1。我注意到,在我的複雜應用程序inet_addr
未能解決任何主機名稱,只能與IP地址一起使用。
如果我將這段代碼輸出到一個簡單的測試應用程序,那麼解析localhost(和主機名)就可以正常工作。
我已經嘗試將127.0.0.1 localhost
行添加到主機文件中,並沒有什麼區別。
爲什麼此代碼在一個應用程序中失敗並且每次都在簡單的測試工具中工作?
順便說一句,-1是INADDR_NONE,預期的錯誤返回值 – user422039 2011-05-18 09:18:31
我已經解決了這個問題。 我的應用程序是從2007年的Delphi轉換成的Delphi XE 2007年的Delphi,winsock.pas限定INADDR_NONE = -1 對於在Delphi XE一些未知的原因,winsock.pas限定INADDR_NONE = DWORD($ FFFFFFFF); 這意味着我的代碼解析本地主機的情況下,如果(資源= INADDR_NONE),然後永遠不會被調用。 感謝您花時間回答我的問題。 – 2011-05-18 10:42:13