MyFirstBmp是内存流,已经存入了个32bit色的图片,发送到服务端的时候为什么服务端会主动关闭?发送8bit的图片就不会,而且能在TImage画布出来
客服端发送图片代码 :
Form1.IdTCPClient1.WriteInteger(MyFirstBmp.Size);
Form1.IdTCPClient1.WriteBuffer(MyFirstBmp.Memory^,MyFirstBmp.Size,true);
服务端接受图片代码:
var BufferLen :Integer; MyBuffer: array[0..1000000] of Byte;
BufferLen:= AThread.Connection.ReadInteger();
AThread.Connection.ReadBuffer(MyBuffer,BufferLen);
MyFirstBmp.Clear; //MyFirstBmp是内存流
MyFirstBmp.Write(MyBuffer,BufferLen);//
MyFirstBmp.Position := 0;
TempBmp:=TBitmap.Create;
TempBmp.LoadFromStream(MyFirstBmp);
Image1.Width := TempBmp.Width;
Image1.Height := TempBmp.Height;
Image1.Canvas.Draw(0,0,TempBmp);
客服端发送图片代码 :
Form1.IdTCPClient1.WriteInteger(MyFirstBmp.Size);
Form1.IdTCPClient1.WriteBuffer(MyFirstBmp.Memory^,MyFirstBmp.Size,true);
服务端接受图片代码:
var BufferLen :Integer; MyBuffer: array[0..1000000] of Byte;
BufferLen:= AThread.Connection.ReadInteger();
AThread.Connection.ReadBuffer(MyBuffer,BufferLen);
MyFirstBmp.Clear; //MyFirstBmp是内存流
MyFirstBmp.Write(MyBuffer,BufferLen);//
MyFirstBmp.Position := 0;
TempBmp:=TBitmap.Create;
TempBmp.LoadFromStream(MyFirstBmp);
Image1.Width := TempBmp.Width;
Image1.Height := TempBmp.Height;
Image1.Canvas.Draw(0,0,TempBmp);
LZ用的是Indy组件, ReadBuffer函数会阻塞直至收到所需字节数量的数据, 所以不会出现你所说的问题。