peakzhang 发表于 2007-12-18 23:35:58

数据传输问题

我用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的长度写到文件中
                  }
不知道是发送端没发送,还是接收端没收到,数据总是丢了
谢谢解答.

peakzhang 发表于 2007-12-18 23:36:07

if(datalen=DataStream.recv_n(buffer,SIZEBUF,0)!=-1)

recv_n 改为recv,弄明白两者的区别

peakzhang 发表于 2007-12-18 23:36:14

用DataStream.recv来代替recv_n。
因为后者recv_n是一直等到收取你需要的数量后,才返回,而你传输文件的时候,文件尺寸不可能总是1024的倍数,所以最后面的部分,小于1024,导致这个部分已经收取下来了,却没法写下来,因为还在等待。你改成recv循环读取就可以了。
页: [1]
查看完整版本: 数据传输问题