//图片的相关信息项
TInfomationData = packed record
TakeTime: string[28];//拍照时间
TakeAdr: string[50];//拍照地点
TakePixel: string[10];//拍照像素
ImageName: string[50]; //图片名
end;
PInfomationData = ^TInfomationData; //TCP数据包
TTCPData = packed record
tdType: Word;//包类型
tdLength: Cardinal;//数据项长度(tdInfo + tdPicture )
tdInfo: TInfomationData;
tdPicture: array of byte;//存放图片数据
end;
PTCPData = ^ TTCPData;使用Delphi7中的Indy 9.0(TIdTCPClient TIdTCPServer)
客户端主体代码:
Var
TCPData: TTCPData;
InfoData: TInfomationData;
……
Begin
给InfoData各成员赋了值后
FS := TFileStream.Create(PathFileName, fmOpenRead or fmShareExclusive);
TCPData. tdType := 1100;
TCPData. tdLength := Sizeof(InfoData) + FS.Size;
TCPData. tdInfo := InfoData; SetLength(TCPData. tdPicture, FS.Size);
FS.Position := 0;
FS.ReadBuffer(TCPData. tdPicture [0], FS.Size);//这步可以成功将图片数据读进tdPicture Client.WriteBuffer(TLVData, SizeOf(TLVData), true);
//这样发送只把tdPicture的地址发送了过去,并没把其中的图片数据发送过去
End;
请问各位大侠,这种情况应该如何才能成功地将图片数据连同TCP数据包一起发送成功呢?
TInfomationData = packed record
TakeTime: string[28];//拍照时间
TakeAdr: string[50];//拍照地点
TakePixel: string[10];//拍照像素
ImageName: string[50]; //图片名
end;
PInfomationData = ^TInfomationData; //TCP数据包
TTCPData = packed record
tdType: Word;//包类型
tdLength: Cardinal;//数据项长度(tdInfo + tdPicture )
tdInfo: TInfomationData;
tdPicture: array of byte;//存放图片数据
end;
PTCPData = ^ TTCPData;使用Delphi7中的Indy 9.0(TIdTCPClient TIdTCPServer)
客户端主体代码:
Var
TCPData: TTCPData;
InfoData: TInfomationData;
……
Begin
给InfoData各成员赋了值后
FS := TFileStream.Create(PathFileName, fmOpenRead or fmShareExclusive);
TCPData. tdType := 1100;
TCPData. tdLength := Sizeof(InfoData) + FS.Size;
TCPData. tdInfo := InfoData; SetLength(TCPData. tdPicture, FS.Size);
FS.Position := 0;
FS.ReadBuffer(TCPData. tdPicture [0], FS.Size);//这步可以成功将图片数据读进tdPicture Client.WriteBuffer(TLVData, SizeOf(TLVData), true);
//这样发送只把tdPicture的地址发送了过去,并没把其中的图片数据发送过去
End;
请问各位大侠,这种情况应该如何才能成功地将图片数据连同TCP数据包一起发送成功呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货