数据传输问题
我用ACE来发送文件,文件是以1K为单位来发送的,最后在文件末尾的数据是不到1K的,使用ACE_SOCK_Stream来发送文件,如果是整1K的发数据能被收
到,但在发送文件尾部不到1K的数据时接收方是丢失的,使得文件最后丢失尾部
数据.
发送代码为 if(DataStream.send_n(buffer,buffer实际大小)==-1)
接收代码为 if(datalen=DataStream.recv_n(buffer,SIZEBUF,0)!=-1) (SIZEBUF=1024)
{
以datalen的长度写到文件中
}
不知道是发送端没发送,还是接收端没收到,数据总是丢了
谢谢解答. if(datalen=DataStream.recv_n(buffer,SIZEBUF,0)!=-1)
recv_n 改为recv,弄明白两者的区别 用DataStream.recv来代替recv_n。
因为后者recv_n是一直等到收取你需要的数量后,才返回,而你传输文件的时候,文件尺寸不可能总是1024的倍数,所以最后面的部分,小于1024,导致这个部分已经收取下来了,却没法写下来,因为还在等待。你改成recv循环读取就可以了。
页:
[1]