c# 通过socket模拟HTTP协议,解析HTTP包头
2007-03-10 11:48

找到很好的文章,可以应用到我正在开发的彩信MM7协议中
C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#

**//// <summary>
  /// 接收数据的方法
  /// </summary>
  /// <param name="socket">Socket连接</param>
  /// <param name="size">要接收的数据长度</param>
  /// <returns>返回收到的字节数组</returns>
  public static byte[] ReceiveData(Socket socket,int size)
  {
   int total=0;     //收到的总的字节数
   int dataleft=size;    //剩余的字节数
   byte[] data=new byte[size];  //接收数据的数组
   int rece=0;      //收到的字节数
   //循环接收数据
   while(total<size)
   {
         rece=socket.Receive(data,total,dataleft,SocketFlags.None);
      //如果收到的字节数为0,那么说明连接断开,返回空的字节数组
      if(rece==0)
      {
          break;
         }
         total+=rece;     //收到的字节数长度++
         dataleft-=rece;     //剩余的字节数--

      }
   return data;      //返回
     }
c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#
方法重载

public static byte[] ReceiveData(Socket socket)
  {
   
   
     StringBuilder header=new StringBuilder();
   string headertext="";
   while(true)
   {
    byte[] data=new byte[1];
    //接收一个字节
    int rece=socket.Receive(data,1,SocketFlags.None);
    
    
    //转换为char
    char c=(char)data[0];
    
      header.Append(c);
    //检查是否到了包头末尾,如果到了包头末尾,那么停止
    //读取
    if(header.ToString().IndexOf("\r\n\r\n")>0)
    {
     string content="CONTENT-LENGTH:";
     int start=header.ToString().ToUpper().IndexOf(content);
       headertext=header.ToString().Substring(start+content.Length);
     int end=headertext.IndexOf("\r\n");
       headertext=headertext.Substring(0,end); //包体长度
     break;
      }
     }
   //
   byte[] ds=ReceiveData(socket,Convert.ToInt16(headertext));
   return ds;
    }

转载于:https://www.cnblogs.com/qiantuwuliang/archive/2011/04/15/2017288.html

C# socket 解析http 协议相关推荐

  1. Http、Socket和WebService协议之间的区别

    1 数据传输方式 1.1 socket传输的定义和其特点     所谓socket通常也称作"套接字",实现服务器和客户端之间的物理连接,并进行数据传输,主要有udp和tcp两个协 ...

  2. java android长连接_基于Java Socket的自定义协议,实现Android与服务器的长连接(一)...

    一.基础知识准备 在正式给大家介绍自定义协议之前,我们先对网络传输和协议解析的相关知识点做一个基本的介绍,尽管这些知识点我们在学校里学过,但难免会有所遗忘,这里先做一个简单的介绍,以便对后文的内容理解 ...

  3. 原生socket使用ICMP协议实现ping单个或多个目标时发生窜包的解决方法

    问题描述 原生socket使用ICMP协议实现ping功能,网上代码很多了,我参考的是这本:王艳平,张越.Windows网络与通信程序设计[M].北京人民邮电出版社,2006. 代码逻辑也很清晰,先构 ...

  4. Java 面试知识点解析——网络协议篇

    Java 面试知识点解析--网络协议篇 前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 ...

  5. day34 异常处理、断言、socket之ftp协议

    Python之路,Day20 = 异常处理.断言.socket之ftp协议 参考博客:http://www.cnblogs.com/metianzing/articles/7148191.html 1 ...

  6. 网络编程 socket模块 tcp协议 udp协议

    网络基础相关知识 , socket模块 , tcp协议通信代码 , tcp和udp编码流程 网络基础相关知识(1) 架构 C / S 架构: client 客户端 和 server 服务器端 优势:能 ...

  7. Java socket调用Http协议Get请求

    2019独角兽企业重金招聘Python工程师标准>>> HTTP是基于Socket之上的协议.HTTP Get是从服务器上获取数据. 服务地址: http://127.0.0.1:8 ...

  8. 解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别

    转载自  解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别 标准Http协议支持六种请求方法,即: 1.GET 2.POST 3.PUT 4.Delete 5. ...

  9. 腐蚀rust服务器命令_【使用 Rust 写 Parser】2. 解析Redis协议

    系列所有文章 https://zhuanlan.zhihu.com/p/115017849​zhuanlan.zhihu.com https://zhuanlan.zhihu.com/p/139387 ...

最新文章

  1. 从C++中的const到MMU(存储器管理单元)(MMU部分为网页整理)
  2. LeetCode 29 两数相除
  3. 微软项目技术结构思路 ExtJs/JQuery + Asp.net MVC + Wcf service + Entity Framework
  4. imageNamed和imageWithContentsOfFile-无法加载图片的问题
  5. ubuntu磁盘分区问题
  6. Linux环境运行Jmeter
  7. android.content.res.Resources$NotFoundException: String resource ID #0x0
  8. 如何选择VC界面库产品?(四)— DSkinLite vs DirectUI
  9. OC语言之Protocol基本使用
  10. NES专题——一块带给无数人年少欢乐的CPU(6502)
  11. Java 电阻计算器(一)
  12. 于的繁体字有几种写法_“人”字繁体字有几种写法?
  13. dns检测工具命令总结
  14. c语言找出最大值和最小值并按降序排输出,C语言用排序法给十个数降序排列,用C语言编写,输入10个数按降序排列...
  15. scrapy实战项目(简单的爬取知乎项目)
  16. Java开发必须会的技能!java页面导出数据到excel
  17. 从零开始的单片机学习(四)
  18. 电子秤称东西用计算机怎么算,怎样将电子天平或电子秤连接到PC并直接将重量值读取到Excel中...
  19. 年入200万的华人程序员,过了30岁就成傻逼了?
  20. 2013华为校园招聘机试题

热门文章

  1. linux 软件集成工具箱,在PB中动态修改SQL语句
  2. FPGA设计思想之“逻辑复制”
  3. 【 Notes 】WLLS Algorithm of TOA - Based Positioning (include the two - step WLS estimator)
  4. 【 FPGA 】总线实现形式之三态门
  5. Guass消去法求解线性方程组
  6. 周末一起用文本数据库玩玩Code First
  7. 二、Asp.Net Core WebAPI——OcelotDemo
  8. 如何保证MongoDB的安全性?
  9. ubuntu root默认密码(初始密码)
  10. 说说Request.Params[key]和Request[key]