procedure TForm3.btn1Click(Sender: TObject); //发送edt1的内容给server
begin
   IdUDPClient1.Connect();
   IdUDPClient1.Send(Edt1.text);
   IdUDPClient1.Disconnect();
   //通过Indy Client UDP发送消息
end;procedure TForm3.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes; 
  ABinding: TIdSocketHandle);  //这里ADate是TBytes,为什么?书上怎么是stream
Var
   TempStream : TStringStream;
begin
  TempStream := TStringStream.Create('');
  TempStream.Write(Adata,sizeof(Adata));
  memo2.Lines.Add(TempStream.DataString);
  TempStream.free;
end;
//输出的结果是乱码,对这个不懂,求懂得指点下

解决方案 »

  1.   

    好像是数据已经读到Adata了,才调用这个函数的?
      

  2.   

    对的,AData已经有数据了,估计是我转换类型的时候出错了,这里类型转换能给个例子么?
      

  3.   

    你传递的数据是不是有中文?用的delphi版本是不是2009以上?
    如果是就要这样:
    IdUDPClient1.send(Edit1.text,TEncoding.UTF8);//指定编码memo2.Lines.Add(TempStream.DataString,,TEncoding.UTF8);
      

  4.   

    上面的memo2.Lines.Add(TempStream.DataString,,TEncoding.UTF8);是错误的。
    应该是:
    memo2.Lines.Add(TEncoding.UTF8.GetString(AData));