一对idudpclient和idudpserver控件,即相用来传文本,又想传bmp、jpg等其它内容,那在程序中应该如何来进行控制呢?谁能给个例程吗?
解决方案 »
- 怎么我的ado连不上EXCEL?
- 如何在程序中使用自己的光标 我已有了光标文件
- ActionManager
- 菜鸟提问
- 急!急!不行了,请问怎么解决在动态创建FORM时屏幕闪得厉害的问题?
- 如何取到鼠标单击DBGrid表中这一行相应字段的值?
- 什么控件可以显示*.gif,*.png等多种图片格式?
- 模糊查询这样写哪里有错啊。ADOQuery1.SQL.Add('SELECT * FROM 测试表 ORDER BY 编号 WHERE 姓名=''%'+Edit4.Text+'%''');
- form1中按钮1,按钮2控制form2中TpageControl的ActivePage属性?
- 关于TNMMSGServ和TNMMSG的问题...
- bitmap 如何加载剪切板中的图片?
- 高分请教一个比较复杂的问题,在线等
然后客户端根据文件类型做相应的处理,是文本就用字符串的formsteam来转换。呵呵图片那些都是2进字不用转换了。呵呵。
如:
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;