一对idudpclient和idudpserver控件,即相用来传文本,又想传bmp、jpg等其它内容,那在程序中应该如何来进行控制呢?谁能给个例程吗?

解决方案 »

  1.   

    使用sendbuff的形式把文件分包传送, 接收按position进行合并
      

  2.   

    我没有表达清楚我要的功能,先谢谢helodd,我的意思是,我即要通过发送文本串来控制工作站去执行一些动作,又想发送bmp,jpg这样的文件给工作站,工作站那一方应该如何来区别服务端下达的是文件串指令,还是发在的bmp,jpg文件,好作出相应的处理
      

  3.   

    第一个包发文件名,文件类型,文件包的个数。
    然后客户端根据文件类型做相应的处理,是文本就用字符串的formsteam来转换。呵呵图片那些都是2进字不用转换了。呵呵。
      

  4.   

    写成结构,把结构发过去就可以了啊
    如:
    type  TTUDPHead=record
             MsgType:String[2];       {数据类型}
             DataSize:LONGWORD;
    end;
    type  TBody=packed record
             ss:TMemoryStream;
    end;
    type
      TSdate=record
             Head:TTUDPHead;
             Body:TBody;
    end;
    发送
        sd.Head.MsgType:='1';
        sd.Body.ss := TMemoryStream.Create;
        jpg := TJpegImage.Create;
        jpg.Assign(Image.Picture.Bitmap);
        jpg.CompressionQuality := 10;
        jpg.JPEGNeeded;
        jpg.Compress;
        jpg.SaveToStream(sd.Body.ss);
        jpg.Free;
        IdUDPServer1.SendBuffer('192.168.1.88',8581,sd,sizeof(sd));
    接收
        memStream := TMemoryStream.Create;
        BufferLen := AData.Size;
        memStream.Size := BufferLen;
        rr.Body.ss := TMemoryStream.Create;
        try
        AData.ReadBuffer(rr,Bufferlen);
        except
        end;
        jpg := TJpegImage.Create;
        //jpg.LoadFromStream(memStream);
        jpg.LoadFromStream(rr.Body.ss);
        Image.Picture.Bitmap.Assign(jpg);
        jpg.Free;
        memStream.Free;