2013-01-04 51 views
1

當運行代碼連接到由TLama上 How to login to a Gmail account and get number of messages in a mailbox with TIdIMAP4?提供的Gmail它奇妙的作品以及在Delphi 5和Delphi 2007與印10錯誤的IDE或調試版本上運行時的Delphi XE3,不發佈版本

我嘗試使用Delphi XE3上的相同代碼,但足夠奇怪的是,在IDE中或直接從文件資源管理器啓動在\ win32 \ debug目錄中生成的exe時,出現'Socket Error#10061 Connection refused'錯誤。如果我啓動在\ Win32 \ release目錄中生成的.exe,它可以正常工作!

我試圖把ssleay32.dll和libeay32.dll放在各種目錄中,但它仍然不起作用,我不確定它是否與此有關。

德爾福XE3上的Indy版本是10.5.9.0。 (最初與我的Delphi XE3更新1一起發貨)。

任何幫助非常感謝!

回答

0

套接字錯誤10061意味着兩種情況之一:

  1. 你試圖連接到IP /端口未被監聽所有的連接。

  2. 您試圖連接到正在偵聽連接的IP /端口,但沒有任何可用插槽以在該特定時刻接受新的客戶端連接。

無法區分客戶端的兩種可能性。

Indy在Debug和Release版本中如何管理套接字應該沒有什麼區別。您看到的問題與DLL無關,因爲它們不會在首先建立底層套接字連接之後調用(但是,您可以使用Indy的IdOpenSSLSetLibPath()函數在IdSSLOpenSSLHeaders單元中告訴Indy DLL位於何處,如果需要)。

致電Connect()時,請仔細檢查Port屬性。設置UseTLS屬性實際上可以更改Port值。如果您需要設置兩個屬性,請先設置UseTLS,然後設置Port,如果您需要使用不同的值,則Indy分配的值。

+0

我試着修改UseTLS後的端口,但仍然是相同的錯誤。如果我在調試模式下連接之前檢查端口,我正確地使用了993. –

+0

可以肯定的是,我嘗試使用IdOpenSSLSetLibPath()來明確地提到該DLL,但是正如您所期望的那樣,它仍然不起作用。這很奇怪。我重新嘗試在win32 \ release \目錄下啓動.exe,並且此版本可以正常工作。 –

+0

由於其調試版本失敗,並且當您在IDE內部時,您嘗試簡單地通過Indy源代碼來確保一切正確設置?使用最新的Indy 10 SVN快照,在調試模式下運行時,我無法連接到Gmail IMAP。所以它必須是你的設置中的東西。 –

相關問題