快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
                  fireEvent();
                 headerTokenIndex = ContainsHeaderEndToken (_headerNode);
             }
         }

         private void fireEvent() {
             if (!_waitParseBody) {
                 if (_currentMessage == null) return;
                 if (_currentMessage.MessageType ==  MessageType.Request) {
                     HttpRequest request =  _currentMessage.AsRequest();
                     Action<HttpRequest> temp =  RequestReceived;
                     if (temp != null)
                         temp(request);
                 }
                 else {
                     HttpResponse response =  _currentMessage.AsResponse();
                     Action<HttpResponse> temp =  ResponseReceived;
                     if (temp != null)
                         temp(response);
                 }
                 _currentMessage = null;
             }
         }

         private void ReadBody(HttpMessage message) {
             if (message.ContentLength == 0) {
                 _waitParseBody = false;
                 return;
             }
             int i = 0, pos = 0;
             bool first = true;
             BytesNode tempNode = _headerNode;
             BytesNode previousNode = tempNode;
             while (tempNode != null) {
                 i = i + tempNode.Length;
                 if (i >= message.ContentLength) {
                     if (first)
                         pos = tempNode.Start +  message.ContentLength;
                     else
                         pos = tempNode.Length - (i -  message.ContentLength);
                     break;
                 }
                 first = false;
                 previousNode = tempNode;
                 tempNode = tempNode.Next;
             }
             if (i >= message.ContentLength) {
                 tempNode.Cut(tempNode.Start, pos );
                 message.BodyStr = _headerNode;
                 _headerNode = tempNode.CutNew(null, pos,  tempNode.Value.Length);
                 tempNode.Next = null;
                 _waitParseBody = false;
    

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号