我在客户端抓取图片用udp协议传输图片,我在客户端
var
    pathname : string;
    picstream : TMemorystream;
    jpg : TJPEGImage;
begin
    jpg := TJPEGImage.Create;
    pathname := '9.bmp';
    image1.Picture.Bitmap.LoadFromFile(pathname);
    jpg.Assign(image1.Picture.Bitmap);
    picstream := TMemorystream.Create;
    jpg.SaveToStream(picstream);
    picstream.SaveToFile('1.bmp');
    showmessage(inttostr(picstream.size));  //显示picstream.size := 52043 我把  IdUDPServer1.buffersize 设为60000
    IdUDPServer1.SendBuffer('127.0.0.1',9001,picstream,sizeof(picstream));
end;
服务器端:
var
    picstream : TMemorystream;
begin
    //sleep(10000);
    picstream := TMemorystream.Create;
    picstream.CopyFrom(adata,sizeof(adata));
    picstream.SaveToFile('3.bmp');
end;
结果是3.bmp只在4k,图片也没读出来。
请教这是为什么呀????

解决方案 »

  1.   

    udp问题,你的报文太大了,udp报文大小不是你的buffer大小。多研究下udp的收发,不要看到方法就乱用,看下udp收发的demo
      

  2.   

    udp 包太太大了 楼上是说法是错误的 udp不可靠
      

  3.   

    我碰到一个更奇怪的问题,发送端发送了300多笔2048大小的数据包,而接受端只接收到了10几笔,都说UDP传输可能丢包,但是也不至于丢成这样啊。