(1) 将流中数据保存到一个数组中。
然后对数据分包发送
(2) 定义如下包结构:
发送包的结构:
struct stsendpacket
{
int packetsize;//data中包的有效长度,<=1024
int flag; //是否有后续包,0=无,1=有
int packetno //包序号
char data[1024];
}
//应答包结构:
struct stanswerpacket
{
int answer; //0--收到,1--重发刚才的包
};
(3)定义双方协议:
发送方处理:
i=1;
while(1)
{
计算buffer中剩余数据长度,长度大于1024,则{置flag=1 ,packetsize=1024,}否则{flag=0,packetsize=剩余数据长度}
packetno=i;
从buffer的剩余数据中拷贝packetsize到stsendpacket的data域中.
发送方发送第i个包,
设置接收超时值
等待返回
if 接收超时 则退出
if flag=0 退出
}
//在接受方
依次接收各包,当flag=0时,退出接收,
在每次接收包后,发送应答包
当flag=0时,退出接收循环
将数组强制类型转换成Stream。
再转换成TBitmap类型。 (参考danceofwind上面的代码,过程相反)