怪!!!内存流在udp网络传输后内容发生了变化???高手请进 ( 积分: 50 )

  • 主题发起人 主题发起人 海无崖
  • 开始时间 开始时间

海无崖

Unregistered / Unconfirmed
GUEST, unregistred user!
我在同一窗口测试以下代码,出现问题,将一个richedit的内容保存到内存流中,然后将内存流保存为一个文件,再用Indy的udpserver控件的sendbuffer发送,在另一个udpserver的onudpread事件中接收,接收到的流大小一样,保存为文件后,但是是乱码,为什么喃??请大侠指点~~~
发送方的代码为:
var
sm:TmemoryStream;
begin
sm:=TmemoryStream.Create;
rve.SaveRTFToStream(sm,false);
sm.Position:=0;
udpserver.SendBuffer('127.0.0.1',40001,sm,sm.size);
showmessage(inttostr(sm.size)); //显示发送流的大小
sm.savetofile('1.txt'); //保存为一个文件
sm.free;
end;

接收方的代码为:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
sm:TmemoryStream;
begin
showmessage(inttostr(adata.size)); //显示收到的流的大小
sm:=TmemoryStream.Create;
Adata.Position:=0;
sm.CopyFrom(AData,Adata.size);
sm.Position:=0;
sm.savetofile('c:/2.txt') //将收到的流保存为文件后,和第一个文件比较,就不一样了????
sm.Free;
end;
 
发送里的:udpserver.SendBuffer('127.0.0.1',40001,sm,sm.size);
改成
udpserver.SendBuffer('127.0.0.1',40001,sm.Memory^,sm.size);
 
非常感谢LeeChange大侠援手,请收分!!!!
 
后退
顶部