如何使用IdTcpClient及IdTcpServer接收字串流 ( 积分: 100 )

  • 主题发起人 主题发起人 jimmypeng
  • 开始时间 开始时间
J

jimmypeng

Unregistered / Unconfirmed
GUEST, unregistred user!
大哥大姐:
我用IdTcpClinet和IdTcpServer 开发一个程序,需循环将客户端的记录一条一条发给服务器端。我做了一个测试程序如下,请帮我看看如下代码, 非常感谢!

Server端
procedure TfrmServer.IdTCPServerExecute(AThread: TIdPeerThread);
var
AStream : TStringStream;
SL : TStringList;
begin
try
SL := TStringList.Create;
AStream := TStringStream.Create('');
AThread.connection.ReadStream(AStream,-1,True);
sl.Text:=Astream.DataString;
Memo1.Text:=Sl.Text;
except
except
on E : Exception do
ShowMessage(E.Message);
end;
end;

Client端
procedure TfrmClient.Button4Click(Sender: TObject);
var
sl:TStringList;
Astream:TStringStream;
begin
if IdTcpClient.Connected=False then
begin
IdTcpClient.Connect;
end;

//***---程序需要在这里循环一条一条发送记录
Astream:=TStringStream.Create('');
sl:=TStringList.Create;
sl.Text:=Memo1.Text;
sl.SaveToStream(Astream);
IdTcpClient.WriteStream(Astream);
//***--

IdTcpClient.Disconnect;
(问题是: 如果程序中不加上 "IdTcpClient.Disconnect" 这句话,Server端就不能接收Client端传过去的字串流。
加上这句话,就能够接收字串流. 那如果我要传1000条记录,就要断1000次,并连1001次,那不是浪费资源及传送速度.请问怎么样这一次连接中,就将要发送的记录发完后,再断开与服务器的连接)

end;
 
大哥大姐:
我用IdTcpClinet和IdTcpServer 开发一个程序,需循环将客户端的记录一条一条发给服务器端。我做了一个测试程序如下,请帮我看看如下代码, 非常感谢!

Server端
procedure TfrmServer.IdTCPServerExecute(AThread: TIdPeerThread);
var
AStream : TStringStream;
SL : TStringList;
begin
try
SL := TStringList.Create;
AStream := TStringStream.Create('');
AThread.connection.ReadStream(AStream,-1,True);
sl.Text:=Astream.DataString;
Memo1.Text:=Sl.Text;
except
except
on E : Exception do
ShowMessage(E.Message);
end;
end;

Client端
procedure TfrmClient.Button4Click(Sender: TObject);
var
sl:TStringList;
Astream:TStringStream;
begin
if IdTcpClient.Connected=False then
begin
IdTcpClient.Connect;
end;

//***---程序需要在这里循环一条一条发送记录
Astream:=TStringStream.Create('');
sl:=TStringList.Create;
sl.Text:=Memo1.Text;
sl.SaveToStream(Astream);
IdTcpClient.WriteStream(Astream);
//***--

IdTcpClient.Disconnect;
(问题是: 如果程序中不加上 "IdTcpClient.Disconnect" 这句话,Server端就不能接收Client端传过去的字串流。
加上这句话,就能够接收字串流. 那如果我要传1000条记录,就要断1000次,并连1001次,那不是浪费资源及传送速度.请问怎么样这一次连接中,就将要发送的记录发完后,再断开与服务器的连接)

end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
629
import
I
后退
顶部