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

小弟我用IdTCPServer和IdTCpclient通讯的时候提示:Missing data provider or data packet

2012-09-10 
我用IdTCPServer和IdTCpclient通讯的时候提示:Missing data provider or data packet我用IdTCPServer和IdT

我用IdTCPServer和IdTCpclient通讯的时候提示:Missing data provider or data packet
我用IdTCPServer和IdTCpclient通讯的时候,我用的是WriteStream,数据的传送是使用ClientDataSet来传送的,我服务器端把数据是传送到客户端了,但是在客户端读取数据的时候,提示:Missing data provider or data packet,有哪些大侠可以帮忙解决一下了?以下是代码

server端
  AdoQuery := TAdoQuery.Create(nil);
  AdoQuery.ConnectionString := Gs_ConnectString;
  AdoQuery.SQL.Text := ls_str;
  AdoQuery.Open;
  DataSetProvider := TDataSetProvider.Create(Nil);
  ClientDataSet := TClientDataSet.Create(Nil);
  DataSetProvider.DataSet := ADOQuery;
  ClientDataSet.Data := DataSetProvider.Data;
  AStream:=TstringStream.Create( ' ');
  ClientDataSet.SaveToStream(AStream,dfxml);
  AStream.Position:=0;
  AThread.Connection.OpenWriteBuffer;
  AThread.Connection.WriteStream(AStream);
  AThread.Connection.CloseWriteBuffer;

client端
  AStream :=TStringStream.Create('');
  IdTCPClient1.ReadStream(AStream, -1, True);
  AStream.Position:=0;
  ClientDataSet1:=TClientDataSet.Create(nil);
  ClientDataSet1.LoadFromStream(AStream); // 每次在这个地方都会提示Missing data provider or data packet
  if ClientDataSet1.RecordCount <> 0 then
  begin
  for li_i:=0 to ClientDataSet1.RecordCount-1 do
  begin
  Memo2.Clear;
  for li_j:=0 to ClientDataSet1.FieldCount-1 do
  Memo2.Lines.Add(ClientDataSet1.Fields[li_j].AsString );
  ClientDataSet1.Next;
  end;
  end;

[解决办法]
可能是读取到AStream 不正确,有可能AStream是空的.
先试一下发送简单的字符串有没有问题.

热点排行