Indy10 Tcp接收數據問題


在做Delphi開發時,使用Indy組件來做網絡通訊是一種比較快捷的方式。今天要說一下indy10中tcp接收數據的問題。

我們在測試時經常使用Wrinteln來發送數據,用Readln來接收數據。用這個兩個函數來測試Server端和Client端的通訊

是否正常。但在實際使用中我們很多時候發送的數據包都是比較復雜的,並不會帶有回車鍵。也有可能用來接收XML報文,

在報文中是可能包含多次的回車鍵的。這種情況下顯然沒有辦法用ReadLn來處理。

我們可以用以下方法來接收數據:

procedure TForm1.Button1Click(Sender: TObject);
var
xml:string;
buf:TIdBytes;
begin
if IdTCPClient1.Socket.Readable() then
begin
IdTCPClient1.Socket.ReadBytes(buf,-1);  //第二個參數使用-1表示接收所有長度。因為我們並不知道要接收的數據到底有多長
xml:=BytesToString(buf);
end;
end;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM