簡體   English   中英

在 Delphi 2007 和 Delphi 11.1 之間對 Indy10 的更改

[英]Changes to Indy10 between Delphi 2007 and Delphi 11.1

我有一些非常舊的代碼是用包含在 Delphi 2007 中的 Indy10 版本編譯的。在 Delphi 11.1 中重新編譯后,ZB136EF5F6A01D816991FE3CF7A6AC7 客戶端不再應該連接到服務器應用程序。 我正在嘗試使用端口 50000 上的 127.0.0.1 連接到服務器。相反,我收到“連接超時”或“非套接字上的套接字操作”錯誤。

是否有任何文檔詳細說明 Delphi 2007 中的 Indy10 和 Delphi 11.1 之間發生了什么變化? Indy Project 網站上的所有鏈接都已損壞,所以我在那里沒有找到任何東西。 根據 IdTCPClient.pas 開頭的日志,兩者之間沒有變化,但是快速文件比較顯示了很多變化,包括端口值從 Integer 到 TIdPort 的變化。 我在 Delph11.1 中重新編譯了我們的服務器應用程序,它將接受來自在 Delphi 2007 中編譯的舊客戶端的連接,但不接受來自新客戶端的連接(因此我懷疑 IdTCPClient 的更改可能會給我帶來問題)。 提前感謝您的幫助。

嘗試打開連接的代碼如下;

function TClientServer.Connect(SuppressMsg : Boolean) : Boolean;
begin
  Result := False;
  if (FRunning = False) and (Connecting = False) then
  begin
    try
      TCPClient.ConnectTimeout := FConnectTimeout;
      Connecting := True;
      if assigned(TCPClient.IOHandler) then
      begin
          TCPClient.IOHandler.ConnectTimeout := FConnectTimeout;
          TCPClient.IOHandler.MaxLineAction  := maSplit;
      end;

      TCPClient.Connect;
      Result      := True;
    except on E : Exception do
      begin

        Connecting := false;
        if SuppressMsg = False then
        begin
          { Look at cycling through the servers in the FCoreServer list   }
          { until we manage to connect to one. Perhaps we need to prompt  }
          { the user to select the machine to connect to ?                }
          ShowMessage('Failed to connect to the core server !' + #13#10#10 +
                    'Please ensure server is running at address ' +
                    TCPClient.Host + ' (' + IntToStr(TCPClient.Port) + ')' + #13#10 + E.Message );
        end;
       end;
    end;
  end;
end;

在 Delphi 11.1 中重新編譯后,應該連接到服務器應用程序的 TCP 客戶端不再這樣做。 我正在嘗試使用端口 50000 上的 127.0.0.1 連接到服務器。相反,我收到“連接超時”或“非套接字上的套接字操作”錯誤。

我知道 Indy 在 localhost 上工作的事實,所以問題必須與您的設置或您的環境有關。 但你沒有提供任何一個的任何細節。

是否有任何文檔詳細說明 Delphi 2007 中的 Indy10 和 Delphi 11.1 之間發生了什么變化?

Indy 的博客描述了隨着時間的推移所做的一些更面向用戶的更改。 但是對於更詳細的更改,您必須查看Indy 的 GitHub 存儲庫中的源代碼更改歷史記錄。

Indy Project 網站上的所有鏈接都已損壞

已知問題: https://www.indyproject.org/2021/02/10/links-to-old-indy-website-pages-are-currently-broken/我只是還沒有時間修復它。

根據 IdTCPClient.pas 開頭的日志,兩者之間沒有變化

存儲在源文件本身中的更改日志非常舊。 它們是 Indy 多年前使用 TeamCoherence 作為其 VCS 時的遺留物。 當 Indy 從 TC 切換到 SVN(然后是 GitHub)時,新的更改日志不再存儲在源文件本身中。 很長一段時間以來,我一直想刪除舊日志,或者在其中添加最終的“這些都是舊的”評論。

我在 Delph11.1 中重新編譯了我們的服務器應用程序,它將接受來自在 Delphi 2007 中編譯的舊客戶端的連接,但不接受來自新客戶端的連接(因此我懷疑 IdTCPClient 的更改可能會給我帶來問題)。

我不知道會破壞連接的任何更改。 它應該工作正常。 但是,如果沒有看到您的設置和環境,就無法知道可能阻止連接的原因。

我終於找到了問題; Indy10 的變化是紅鯡魚。 我的項目在幾個單元中使用 FastMM,當我注釋掉它工作的所有實例時,出於某種奇怪的原因。 客戶端現在愉快地連接到服務器。 @RemyLebeau - 非常感謝您在這方面的所有幫助以及我在過去幾個月中發布的許多其他問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM