MO:TMemoryStream;
FBM:Tbitmap;
Str:string;FBM.SaveToStream(MO);
str:='id=123,name=tupian,'; //加前面?加后面?
IdTCPClient1.WriteStream(MO);以上是把一个图片的数据流用TCP包发出去,希望除了发送图片数据流以外,把'id=123,name=tupian,'这个内容和一起发送,然后TcpServer读的时候分别把id=123,name=tupian和图片数据流取出来
我用MOo.Read(Str,19);这样一读就出错了
正确的方法应该怎么组包拆包啊?
FBM:Tbitmap;
Str:string;FBM.SaveToStream(MO);
str:='id=123,name=tupian,'; //加前面?加后面?
IdTCPClient1.WriteStream(MO);以上是把一个图片的数据流用TCP包发出去,希望除了发送图片数据流以外,把'id=123,name=tupian,'这个内容和一起发送,然后TcpServer读的时候分别把id=123,name=tupian和图片数据流取出来
我用MOo.Read(Str,19);这样一读就出错了
正确的方法应该怎么组包拆包啊?
解决方案 »
- Delphi2009的指针操作十分混乱,或者应该算严重的Bug!
- 关于 DELPHI 调用 c++ builder 导出的函数的 问题
- 主从数据更新问题
- The Class function is called from a class constructor
- 对delphi学习的一些疑问
- 我按版主冰儿马甲的文章写了一个IE插件,怎么样在一打开IE的时候自动提示安装或直接安装呢?
- Batchmove
- 大家请帮忙
- 能否可以说说api函数中的shellapi的含义
- 求助高手
- delphi 7 与delphi 2007可以装在一起吗?谢谢
- 再一次发贴求助DLL窗体的问题 主程序进行大量工作时,DLL窗体会暂时冻结
MO.WriteBuffer(Str[1], Length(Str));
FBM.SaveToStream(MO);
IdTCPClient1.WriteStream(MO);
或者:FBM.SaveToStream(MO);
str:='id=123,name=tupian,';
IdTCPClient1.Write(str);
IdTCPClient1.WriteStream(MO);
MO.WriteBuffer(Str[1], Length(Str));
FBM.SaveToStream(MO);
IdTCPClient1.WriteStream(MO); 用这个方法发送,接收的时候 ReMS:TMemoryStream;
AThread.Connection.ReadStream(ReMS,-1,true);
//数据接收完了
ReMS.Position :=0;
ReMS.Read(Str[1],19);
ListBox1.Items.Add('str='+Str);//程序挂了原先尝过把把str放到MO的前面正着读,失败了。把str放到MO的后面,读最后的十几位,还是失败了
ReMS.Position := 0;
SetLength(Str, 19); //加上这一句
ReMS.Read(Str[1],19);
ListBox1.Items.Add('str='+Str);