最近在做文件传输,遇到一个小问题困扰了很久:文件传输完成后,本地显示文件是0KB,也就是还没有从缓冲区写入,而本人已经使用了filestream.flush() , filestream.close()也没有效果。只有使用sokcet..close()或关闭例程之后,本地文件才能写入。而关闭socket连接不利于本人接下去的操作。
本人猜测是socket连接与filestream之间的连接没有被切断,导致本人接下去的程序代码都无法继续执行,不知道该怎么样解决,求帮助各位!
解决方案
30
你判断能否接受完最好用文件的实际大小作为判定条件,当接收到足够的字节数时就退出。别忘了,你发送的文件可能和别的消息粘在一起,你得处理这种情况。另外最好是每写入一次就flush一次
5
1、假如文件已经存在,FileMode.Create会覆盖掉原先的文件
2、Receive.ReceiveVarData是什么?它确实有返回数据么?
5
MyFileStream.Write(data, 0, data.Length);
这个地方,每次索引都从0开始?那永远myfilestream长度永远等于最后一个data.length吧
int indexlength=0;
while(true)
{
…..
MyFileStream.Write(data, indexlingth, data.Length);
indexlength+=data.length;
…..
}