首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请帮看下这小段代码哪里有有关问题?IdTCPClient、IdTCPServer传输数据

2012-03-13 
请帮看下这小段代码哪里有问题?IdTCPClient、IdTCPServer传输数据服务端有多条记录,我想一次性传回给客户端

请帮看下这小段代码哪里有问题?IdTCPClient、IdTCPServer传输数据
服务端有多条记录,我想一次性传回给客户端!有没有其它什么方法也可以实现呢?

服务端:
procedure TfrmMain.IdTCPServerExecute(AThread: TIdPeerThread);
var cmd:String;
  DList:TStringList;
  Stream1:TMemoryStream;
begin
  cmd:=Athread.Connection.ReadLn;
  if cmd='testdata' then
  begin
  //获取数据
  DList:=TStringList.Create;
  Stream1:= TMemoryStream.Create;
  ADOQuery1.SQL.Text:='select top 3 uname from usertable';
  ADOQuery1.Open;
  while not ADOquery1.Eof do
  begin
  Dlist.Add(ADOQuery1.fieldbyname('jldwmc').AsString);
  ADOQuery1.Next;
  end;
  Dlist.SaveToStream(Stream1);
  Stream1.Position := 0;
  AThread.Connection.WriteStream(Stream1);  
  end;
end;

客户端:
procedure TfrmMain.Button3Click(Sender: TObject);
var Stream1:TMemoryStream;
  DList:TStringList;
begin
  IdTCPClient.WriteLn('testdata');
  Stream1:=TMemoryStream.Create;
  DList:=TStringList.Create;
  IdTCPClient.ReadStream(Stream1,sizeof(Stream1));
  Dlist.LoadFromStream(Stream1);
  Stream1.Position:=0;
  if Dlist.Count>0 then //Dlist.Count的值为0,没有接收到服务器返回的值了,为什么?
  begin
  ShowMessage('ok');
  end;
end;

[解决办法]
这样看行不行:
IdTCPClient.ReadStream(Stream1,sizeof(Stream1)); 
Stream1.Position:=0;
Dlist.LoadFromStream(Stream1); 

热点排行