文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SilverLight搭建WCF聊天室详细过程(十五)接收文件

SilverLight搭建WCF聊天室详细过程(十五)接收文件

时间:2010-12-26  来源:fugitiver

        上一节我们讲到如何分段发送文件,这节我主要讲下接收文件并保存为本地文件,接收过程就是发送的一个你过程,由于是二进制文件流,所以我们只要保存时保存成发送文件的后缀就可以了,先看下流程图:

        

        流程图解释:当发送方发送一段二进制数据流时,接收方会把这段流写入到文件并且只要发送状态为0,就一直打开文件流等待写入。

        关键代码:

 

代码 public void fileReceive(string id, byte[] content, int state)
        {
            if (fileStream.ContainsValue(id))//确定接收文件列表中是否包含这个文件
            {
                Stream stream = fileStream.Where(f => f.Value == id).First().Key;//找到这个文件流
                proBarList.Where(f => f.Tag.ToString() == id).First().Value += (double)content.Length / 1048576;//进度条增加
                stream.Write(content, 0, content.Length);//写入文件
                if (state == 1)//如果状态为文件传输最后一块
                {
                    stream.Close();//关闭流
                    fileStream.Remove(stream);//移除流
                    chatForm.spContent.Children.Remove(chatForm.spContent.Children.Where(f => (f as fileprompt).Tag.ToString() == id).First());
                    if (fileStream.Count == 0)
                    {
                        chatForm.LayoutRoot.Width = chatForm.LayoutRoot.Width==400?500:400;
                        chatForm.cdContent.Width = new GridLength(0);
                    }
                }
            }
        }        }

 

        思路分析:

        当发送方发送完文件中的一段时,服务端开始发送给接收客户端,客户端fileStream保存已经同意接受的文件流,通过GUID找到文件流,开始写入,直到发送方通知接收方文件发送完成。

        下一节我会对文件收发模块总结,把总体思路介绍给大家。

        本节代码下载

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载