找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4055|回复: 2

数据传输问题

[复制链接]
发表于 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的长度写到文件中
                  }
不知道是发送端没发送,还是接收端没收到,数据总是丢了
谢谢解答.
 楼主| 发表于 2007-12-18 23:36:07 | 显示全部楼层
if(datalen=DataStream.recv_n(buffer,SIZEBUF,0)!=-1)

recv_n 改为recv,弄明白两者的区别
 楼主| 发表于 2007-12-18 23:36:14 | 显示全部楼层
用DataStream.recv来代替recv_n。
因为后者recv_n是一直等到收取你需要的数量后,才返回,而你传输文件的时候,文件尺寸不可能总是1024的倍数,所以最后面的部分,小于1024,导致这个部分已经收取下来了,却没法写下来,因为还在等待。你改成recv循环读取就可以了。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-22 21:57 , Processed in 0.018994 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表