我现在想将TmemoryStream按包传输。
ms := TmemoryStream.Create;
Jpg := Tjpegimage.Create;
Jpg.Assign(Image1.Picture.Graphic);
Jpg.SaveToStream(Ms);
Ms.Position := 0;
-- arraybye :array of byte;
将TMemoryStream 每64个字节读入到一个byte,如果这些byte是按包传输的,那么怎样用一个array of byte 接收所有发出的byte.
ms := TmemoryStream.Create;
Jpg := Tjpegimage.Create;
Jpg.Assign(Image1.Picture.Graphic);
Jpg.SaveToStream(Ms);
Ms.Position := 0;
-- arraybye :array of byte;
将TMemoryStream 每64个字节读入到一个byte,如果这些byte是按包传输的,那么怎样用一个array of byte 接收所有发出的byte.
解决方案 »
- 在Delphi中怎么对ExcelApplication操作?
- 询问若干个API的问题
- 如何把查询出来的数据导出到Excel中去?
- 难道这是密而不宣的范围?(问WEB环境硬件)
- 在CHART上,显示鼠标位置的纵坐标?
- 急问,关于pchar,pbyte和string类型之间的问题,在线等
- 在数据库中定义的DateTime类型字段(SQL Server),我如何只让DBGrad自动显示年和月!
- BlueTrees、pchddcat(虚小)、......:向老鸟开火!
- delphi指针问题
- 请教:DPI放大125%的话,窗口显示不全,大家有什么好办法吗?
- 怎样做这样一个串口发送的程序?
- 一个mdiForm(也就是主窗口)上面要放一个窗口(以下称为A窗口),要求A窗口跟主窗口大小一样。
Ms.Position := 0;
while Ms.Size- Ms.Position>=64 do
begin
Ms.ReadBuffer(arraybye[0], 64);
Ms.Position:=Ms.Position+64;
//发送
end;
//如果最后有没有发出的数据,把尾巴发送出去,最后的可能不够64字节,你需要处理,可重设置数组的长度UPD发送可能要快些,但存在丢包和乱序的情况
如果对速度要求不是很严格,可用TCP发送接收端可以用内存流接收,如果非要数组接收,最好一开始能把数据的总长度传过去如果工程存在大量不同种类的通读的情况,你可以考虑用结构(Record)来封装包,这样可以很方便的加入附加的信息
因为我对网络传输比较陌生,而且,现在是用串口(mscomm),所以在接收时比较麻烦,