快速业务通道

自己写个IIS玩-协议解析篇

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
g(Encoding encoding)
     {
         Decoder decoder = encoding.GetDecoder();
         StringBuilder sb = new StringBuilder();
         BytesNode tempNode = this;
         while (tempNode != null)
         {
             char[] chars = new char[decoder.GetCharCount(tempNode.Value,  tempNode.Start, tempNode.Length)];
             decoder.GetChars(tempNode.Value, tempNode.Start,
                              tempNode.Length, chars,  0);
             sb.Append(chars);
             tempNode = tempNode.Next;
         }
         return sb.ToString();
     }
}

HttpMessage?宸戦燕幣匯倖渇?議Http?連?茅阻淫根?連遊??連悶吉奉來翌?珊減夭兜兵晒?連 遊?盾裂?連悶海業?鳩範?連頁Request,Response吉孔嬬。

public class HttpMessage
{
     public const string PROTOCOL = "HTTP";
     public const string CONTENT_LENGTH_HEADER = "Content-Length";
     public MessageType MessageType = MessageType.UnKnow;
     public BytesNode BodyStr;
     public int ContentLength;
     public Dictionary<string, string> Headers = new Dictionary<string,  string>();
     internal BytesNode HeaderStr;
     public string Protocol;
     private string startLine;
     public object SyncRoot = new object(); //todo:壙扮短喘

     public HttpMessage()
     {
     }

     public HttpMessage(HttpMessage message)
     {
         startLine = message.startLine;
         Headers = message.Headers;
         BodyStr = message.BodyStr;
     }

     internal void InitHeaders(List<BytesLine> lines)
     {
         if (MessageType == MessageType.UnKnow)
         {
             #region 盾裂MessageType,ContentLength式野割?連遊
             for (int i = 0; i < lines.Count; i++)
             {
                 BytesLine line = lines[i];
                 if (i == 0)
                 {
                     string tempStr = line.FullString;
                     MessageType = tempStr.StartsWith(PROTOCOL)
                                    ?
                                        MessageType.Response
                                    :  MessageType.Request;
                     startLine = tempStr;
                     continue;
                 }
                 if (line.Pos1 == -1) throw new  ApplicationException("header line error:"
                     + line.FullString);
       

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号