客戶端傳送流到伺服器端有幾種方式,這裡討論兩種:
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.語音合成...