Delphi的Indy通訊中傳送流檔案的注意事項

2022-04-04 15:54:19 字數 1871 閱讀 1906

客戶端傳送流到伺服器端有幾種方式,這裡討論兩種:

1.客戶端連線到伺服器後,傳送乙個流,伺服器接收乙個流。

procedure tclientform.button3click(sender: tobject);

var s: string; stream: tstream;

begin

trys := 'hello world!';

stream := tstringstream.create(s);

idtcpclient1.openwritebuffer;

idtcpclient1.writeinteger(stream.size);//注意這裡:要先寫入流的長度,在讀取的時候如果使用 athread.connection.readstream(stream);

idtcpclient1.writestream(stream, true);

finally

idtcpclient1.closewritebuffer;

stream.free;

end;

end;

procedure tserverform.idtcpserver1execute(athread: tidpeerthread);

var stream: tstream;

begin

if not athread.terminated and athread.connection.connected then

begin

stream := tstringstream.create('');

athread.connection.readstream(stream);//這句相當於readstream(stream,-1,false),就是根據流的前四個位元組讀出流長度,然後再將流讀出

stream.position := 0;

memo1.lines.loadfromstream(stream);

end;

end;

2.客戶端連線到伺服器後,傳送乙個或多個流,當斷開的時候,伺服器將所有流合併在一起接收。

procedure tclientform.button3click(sender: tobject);

var s: string; stream: tstream;

begin

idtcpclient1.connect;

trys := 'hello world!';

stream := tstringstream.create(s);

idtcpclient1.openwritebuffer;

idtcpclient1.writestream(stream, true);

finally

idtcpclient1.closewritebuffer;

stream.free;

idtcpclient1.disconnect;

end;

end;

procedure tserverform.idtcpserver1execute(athread: tidpeerthread);

var stream: tstream;

begin

if not athread.terminated and athread.connection.connected then

begin

stream := tstringstream.create('');

athread.connection.readstream(stream,-1,true);//當斷開連線時候接收流

stream.position := 0;

memo1.lines.loadfromstream(stream);

end;

end;

通訊中的backhaul

backhaul 可以翻譯成回程,也叫回程線路 在現有的無線通訊中,backhaul指的是基站和基站控制器之間的鏈結 一般使用者先接入基站,基站再與基站控制器通訊,然後進入核心網 在無線技術中,回程 backhaul 指的是從信元站點向交換機傳送語音和資料流量的功能。在衛星通訊中,回程是指衛星向自身...

通訊中的「交織」技術

在陸地移動通訊這種變參通道上,位元差錯經常是成串發生的。這是由於持續較長的深衰落谷點會影響到相繼一串的位元。然而,通道編碼僅在檢測和校正單個差錯和不太長的差錯串時才有效。為了解決這一問題,希望能找到把一條訊息中的相繼位元分散開的方法,即一條訊息中的相繼位元以非相繼方式被傳送。這樣,在傳輸過程中即使發...

DSP在通訊中的應用

在當前的dsp市場上,通訊裝置是其最大的使用者,以下是其中的幾個例子 1 數字式蜂房系統 數字式蜂房系統使用通用dsp來實現語音合成 speech synthesis 糾錯編碼 error correction coding 基帶數據機 baseband modem 以及系統控制等功能。a.語音合成...