MMS_encapsulation.cpp
上传用户:szhqbq
上传日期:2014-07-08
资源大小:46k
文件大小:3k
开发平台:

Visual C++

  1. #include <string.h> 
  2. #include <stdio.h>
  3.  int  main()
  4. {
  5. unsigned char mmsData[30000];
  6. unsigned char *str,*pzMmsData=mmsData;
  7. int i=0,j=0;
  8. memset(pzMmsData,0,sizeof(mmsData));//初始化
  9. //标题编码
  10. mmsData[0]=0x8C;mmsData[1]=0x80;
  11. mmsData[2]=0x98;mmsData[3]=0x30;
  12. mmsData[4]=0x31;mmsData[5]=0x32;
  13. mmsData[6]=0x33;mmsData[6]=0x34;
  14. mmsData[7]=0x35;mmsData[8]=0x36;
  15. mmsData[9]=0x37;mmsData[10]=0x38;
  16. mmsData[11]=0x39;
  17. mmsData[13]=0x8D;mmsData[14]=0x90;
  18. //源地址
  19. mmsData[15]=0x89;mmsData[16]=0x1A;//地址长度
  20. mmsData[17]=0x80;
  21. pzMmsData = &mmsData[18];
  22. strcpy(str,"+8613570596080/TYPE=PLMN");
  23. memcpy(pzMmsData,str,strlen(str));
  24. //目的地址
  25. mmsData[43]=0x97;
  26. pzMmsData =&mmsData[44];
  27. strcpy(str,"+8613570596080/TYPE=PLMN");
  28. memcpy(pzMmsData,str,strlen(str));
  29. mmsData[69]=0x96;
  30. //消息主题
  31. pzMmsData=&mmsData[70];
  32. strcpy(str,"My first test message!");
  33. memcpy(pzMmsData,str,strlen(str));
  34.     i=70+strlen(str)+1;
  35. //Content-type
  36. mmsData[i++]=0x84;mmsData[i++]=0x1B;//值的长度
  37. j=i+0x1B;//指向正文部分;
  38. mmsData[i++]=0xB3;mmsData[i++]=0x89;
  39. //类型参数
  40. pzMmsData=&mmsData[i];
  41. strcpy(str,"application/smil");
  42.     memcpy(pzMmsData,str,strlen(str));
  43.     i+=strlen(str)+1;
  44. //起始参数
  45. mmsData[i++]=0x8A;
  46.     pzMmsData=&mmsData[i];
  47. strcpy(str,"<0000>");
  48. memcpy(pzMmsData,str,strlen(str));
  49. //正文编码
  50. i=j;
  51.     mmsData[i++]=0x02;//正文只有两部分
  52. //第一部分(smil部分)
  53. mmsData[i++]=0x23;//内容类型+其他可能标题的长度
  54. //数据长度
  55. mmsData[i++]=0x85;
  56. mmsData[i++]=0x1D;
  57. j=i+0x23;//指向数据部分
  58. //内容类型+其他可能标题(文本编码)
  59. pzMmsData=&mmsData[i];
  60. strcpy(str,"application/smil");
  61. memcpy(pzMmsData,str,strlen(str));
  62. i+=strlen(str)+1;
  63. pzMmsData=&mmsData[i];
  64. strcpy(str,"Content-ID");
  65. memcpy(pzMmsData,str,strlen(str));
  66. i+=strlen(str)+1;
  67. pzMmsData=&mmsData[i];
  68. strcpy(str,"<0000>");
  69.     memcpy(pzMmsData,str,strlen(str));
  70. //实际数据
  71. i=j;
  72. j=j+0x29D;//指向第二部分
  73. pzMmsData=&mmsData[i];
  74. strcpy(str,"<smil xmlns="http://www.w3.org/2001/SMIL20/Languae">n
  75.    <head>n
  76.      <layout>n
  77.       <root-layout width="160" height="140"/>n
  78.     <region id="Image" width="160" height="120" left="0" top="0"/)n
  79.         <region id="Text" width="160" height="20" left="0" top="120"/>n
  80.       </layout>n
  81.    </head>n
  82.    <body>n
  83.      <image src="test.jpg"  region="Image"/>n
  84.      <text src="HelloWorld.txt" region="Text"/>n
  85.    </body>n
  86. </smil>n
  87. ");
  88.    memcpy(pzMmsData,str,strlen(str));
  89. //正文第二部分(image/jpg)编码
  90.    i=j;
  91.    mmsData[i++]=0x11;//内容类型+其他可能标题长度
  92.    mmsData[i++]=0x8A;mmsData[i++]=0x7B;//实际数据长度
  93.    j=i+0x11;
  94.    //内容类型+其他可能标题
  95.    mmsData[i++]=0x9D;  //image/jpg的码值
  96.    mmsData[i++]=0x8E;//内容位置
  97.    pzMmsData=&mmsData[i];
  98.    strcpy(str,"test.jpg");
  99.    memcpy(pzMmsData,str,strlen(str));
  100.    //实际数据
  101.    i=j;
  102.    j=j+0x57B;//指向第三部分
  103.    ..........
  104. //正文第三部分(text/plain)编码
  105.    i=j;
  106.    mmsData[i++]=0x11;//内容类型+其他可能标题长度
  107.    mmsData[i++]=0x00;mmsData[i++]=0x0E;//实际数据长度
  108.    j=i+0x11;
  109.  //内容类型+其他可能标题
  110.    mmsData[i++]=0x83;//text/plain码值
  111.    mmsData[i++]=0x8E;//内容位置
  112.    pzMmsData=&mmsData[i];
  113.    strcpy(str,"HelloWorld.txt");
  114.    memcpy(pzMmsData,str,strlen(str));
  115.    //实际数据
  116.    i=j;
  117. }