我正在創建一個客戶端服務器應用程序以連續流式傳輸圖像,以像視頻流應用程序一樣工作。在Delphi中連接較少的TCP客戶端服務器應用程序
客戶端應用程序有一個計時器,每300毫秒發送一個計時器向服務器發送請求,服務器回覆圖像。
實施工作正常,但過一段時間(約5分鐘或更長時間後)兩種版本之後獲得凍結沒有任何錯誤消息(但是非常很少,我得到一個消息,說出來的系統資源)
這之前甚至更糟糕(約15秒後凍結),但現在它發生在5分鐘後,我改變了idtcpserver1.terminatewaittime to 10 (from 5000 defalt)
。
我不明白爲什麼錯誤發生,但我很確定它不是很好使用基於計時器的請求。
我可以將tcpserver轉換爲不可靠的無連接協議,以使其更快速並減少請求壓力。
但我不希望使用UDP,因爲它無法檢測到損壞錯誤(但我並不需要修正,我只是想知道是否有任何錯誤(忽略整個圖像))
procedure server.IdTCPServer1Execute(AContext: TIdContext);
begin
LLine := AContext.Connection.IOHandler.ReadLn();
AContext.Connection.IOHandler.Write(ast, 0, true);
end;
procedure client.timertick(Sender: TObject);
begin
IdTCPClient1.IOHandler.WriteLn(Edit1.Text);
LLine := TMemoryStream.Create;
IdTCPClient1.IOHandler.ReadStream(LLine, -1, false);
end;
只有源代碼相關的印地給予別人隱瞞
===============更新雷米勒博後 - TeamB和Arnaud Bouchez解答====== ====
感謝凍結是由於在某些情況下無法訪問圖像造成的。 他們提到的工具幫助我追查問題
但仍是主要問題不解決
我可以轉換的tcpserver爲不可靠的無連接的協議,使其速度更快,降低了要求的壓力。
這兩個應用在進程管理器中的內存是什麼? – Graymatter
凍結時的內存狀態並不差,與運行時相同(6,000 kb),但進程使用率下降到0% – VibeeshanRC
根據定義,TCP不是無連接嗎? – jpfollenius