码迷,mamicode.com
首页 > 移动开发 > 详细

StreamSendWrapper 类(NetworkComms 2.3.1源码了解和学习)

时间:2015-01-28 21:18:40      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:

 networkComms.net2.3.1开源版本,基于gpl V3协议。因为不能公开3.x版本的源码,所以基于此版本进行学习。3.X版本进行了诸多改进和Bug修复,使用方法上两者相差不大。
/*请注意使用以下代码,需遵循GplV3协议*/


using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace DPSBase
{
     
    /// 发送全部或者部分数据流
   
    public class StreamSendWrapper : IDisposable
    {
        object streamLocker = new object();

       
        public ThreadSafeStream ThreadSafeStream { get; set; }
      
        public long Start { get; private set; }
      
        public long Length { get; private set; }

      
        public StreamSendWrapper(ThreadSafeStream stream)
        {
            this.ThreadSafeStream = stream;
            this.Start = 0;
            this.Length = stream.Length;
        }

       
        public StreamSendWrapper(ThreadSafeStream stream, long start, long length)
        {
            if (start < 0)
                throw new Exception("Provided start value cannot be less than 0.");

            if (length < 0)
                throw new Exception("Provided length value cannot be less than 0.");

            this.ThreadSafeStream = stream;
            this.Start = start;
            this.Length = length;
        }

        /// <summary>
        /// Return the MD5 for the specific part of the stream only.
        /// 返回数据流指定部分的MD5值
        /// </summary>
        /// <returns></returns>
        public string MD5CheckSum()
        {
            using (MemoryStream ms = new MemoryStream())
            {
                ThreadSafeStream.CopyTo(ms, Start, Length, 8000);

#if WINDOWS_PHONE
                using(var md5 = new DPSBase.MD5Managed())
                {
#else
                using (var md5 = System.Security.Cryptography.MD5.Create())
                {
#endif
                    return BitConverter.ToString(md5.ComputeHash(ms)).Replace("-", "");
                }
            }
        }
 
        public void Dispose()
        {
            ThreadSafeStream.Dispose();
        }
    }
}
 http://www.cnblogs.com/networkcomms
http://www.networkcoms.cn 编辑

 

StreamSendWrapper 类(NetworkComms 2.3.1源码了解和学习)

标签:

原文地址:http://www.cnblogs.com/networkcomms/p/4257002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!