BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #48109同步于 2010/12/20
CPP机器人发帖

想实现发送mms消息,怎么弄

cindyai
2010/12/20镜像同步0 回复
这是本人在网上找的代码,可是之行有好多错误,求解答,或者直接给个代码都行,谢谢 #define nWAP_SIN_EX 25 //单包WAP PUSH额外字节长度 #define nMMS_SIN_EX 77 //单包彩信额外字节长度 int CWapPush::GetMMSEncode( char * pSrcNum, //源发送号码 char * pUrl, //下载连接 char * pSubject, //标题 int nMMSSize, //字节大小 char * pOut1, //输出短信二进制 int * nOut1Len, char * pOut2, //输出短信二进制 int * nOut2Len, int * nCount) //几条短信 { * nCount=1; int nLeftByte; char szEncode1[350*2]={0}; //加码编码1 char szEncode2[350]={0}; //加码编码2 int nSrcNumLen = strlen(pSrcNum) ; int nUrlLen = strlen(pUrl); int nTransactionID= GetTransactionID(); int nSubjectLen=strlen(pSubject); //标题长度 int nSubject_UTF_8_Len; //标题***UTF-8的长度 char *pSubject_UTF_8 =(char *) alloca (nSubjectLen* 3 + 1 + 3 ); //new char[nSubjectLen* 3 + 1 ]={0}; GB2312ToUTF_8(pSubject, nSubjectLen,pSubject_UTF_8+2); //标题***UTF-8 nSubject_UTF_8_Len=strlen(pSubject_UTF_8 + 2 ); pSubject_UTF_8[0]=nSubject_UTF_8_Len + 1 + 1 ; //charset value-length pSubject_UTF_8[1]=0xEA; nSubject_UTF_8_Len=nSubject_UTF_8_Len + 2 ; if( ( nMMS_SIN_EX + nSrcNumLen + nUrlLen + nSubject_UTF_8_Len ) > 140 ) { //第一条短信息 // udh szEncode1[0]='0';szEncode1[1] ='B'; // "0B" User Data Header Length (11 bytes) szEncode1[2]='0';szEncode1[3] ='5'; // "05" UDH Item Element id (Port Numbers) szEncode1[4]='0';szEncode1[5] ='4'; // "04 UDH IE length (4 bytes) szEncode1[6]='0';szEncode1[7] ='B'; // "0B" szEncode1[8]='8';szEncode1[9] ='4'; // "84" destination port number szEncode1[10]='2';szEncode1[11] ='3';// "23" szEncode1[12]='F';szEncode1[13] ='0';// "F0"origin port number szEncode1[14]='0';szEncode1[15] ='0';// "00"concatenation identifier element szEncode1[16]='0';szEncode1[17] ='3';// "03"length of params szEncode1[18]='3';szEncode1[19] ='A';// "3A"concat reference szEncode1[20]='0';szEncode1[21] ='2';// "02"total parts szEncode1[22]='0';szEncode1[23] ='1';// "01"sequence number //pud += "400601AE"; ByteToHexString(nTransactionID,&szEncode1[24]); //transaction id (connectionless WSP) szEncode1[26]='0';szEncode1[27] ='6';// pdu type (06=push) szEncode1[28]='2';szEncode1[29] ='2';// Headers len //application/vnd.wap.mms-message+'0' memcpy(&szEncode1[30],"6170706C69636174696F6E2F766E642E7761702E6D6D732D6D65737361676500",0x20 * 2 ); // AF84 x-wap-application.ua szEncode1[94]='A';szEncode1[95] ='F'; szEncode1[96]='8';szEncode1[97] ='4'; // MMS Specific stuff szEncode1[98]='8';szEncode1[99] ='C'; szEncode1[100]='8';szEncode1[101] ='2'; //8C 82 message type (m-notification.ind) szEncode1[102]='9';szEncode1[103] ='8'; //98 MMS transaction ID szEncode1[104]='3';szEncode1[105] ='3'; szEncode1[106]='4';szEncode1[107] ='6'; szEncode1[108]='3';szEncode1[109] ='6'; szEncode1[110]='3';szEncode1[111] ='6'; szEncode1[112]='3';szEncode1[113] ='8'; szEncode1[114]='3';szEncode1[115] ='8'; szEncode1[116]='3';szEncode1[117] ='2'; ByteToHexString(nTransactionID,&szEncode1[118]);// transaction id (connectionless WSP) szEncode1[120]='0';szEncode1[121] ='0'; szEncode1[122]='8';szEncode1[123] ='D'; szEncode1[124]='9';szEncode1[125] ='0';// 8D90 MMS version 1.0 szEncode1[126]='8';szEncode1[127] ='9';// FROM ByteToHexString(nSrcNumLen + 1 + 1,&szEncode1[128]); // length of from szEncode1[130]='8';szEncode1[131] ='0'; // 80 address present ByteArrayToHexString(pSrcNum,nSrcNumLen,&szEncode1[132]); //发送号码 szEncode1[132+ nSrcNumLen *2 ]='0';szEncode1[133+ nSrcNumLen *2 ]='0';//00 szEncode1[134+ nSrcNumLen *2 ]='9';szEncode1[135+ nSrcNumLen *2 ]='6';//96 subject ByteArrayToHexString(pSubject_UTF_8,nSubject_UTF_8_Len,&szEncode1[136+ nSrcNumLen *2 ]);//显示标题 szEncode1[136+ (nSubject_UTF_8_Len + nSrcNumLen)*2 ]='0';szEncode1[137+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='0';//00 szEncode1[138+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[139+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='A'; szEncode1[140+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[141+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='0';//Personal message class szEncode1[142+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[143+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='E';//msg size int msgByte=0; if(nMMSSize&0xFF000000) { sprintf(&szEncode1[146+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%08X",nMMSSize); msgByte=4; } else if(nMMSSize&0xFF0000) { sprintf(&szEncode1[146+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%06X",nMMSSize); msgByte=3; } else if(nMMSSize&0xFF00) { sprintf(&szEncode1[146+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%04X",nMMSSize); msgByte=2; } else if(nMMSSize&0xFF) { sprintf(&szEncode1[146+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%02X",nMMSSize); msgByte=1; } ByteToHexString(msgByte,&szEncode1[144+ (nSubject_UTF_8_Len + nSrcNumLen) *2]); // 2 octets szEncode1[146+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[147+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='8';//88 expiry szEncode1[148+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[149+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='5';//05 expiry length szEncode1[150+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[151+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='1';//81 relative format szEncode1[152+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[153+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='3';// 3 octets szEncode1[154+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[155+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='9'; szEncode1[156+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='3';szEncode1[157+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='A'; szEncode1[158+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[159+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='0';//01 51 80: 24hrs (86400 secs) szEncode1[160+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[161+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='3';//83 content location ByteArrayToHexString(pUrl, nUrlLen ,&szEncode1[162+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2]); szEncode1[162+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte + nUrlLen) *2]='0'; szEncode1[163+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte + nUrlLen) *2]='0'; *nOut1Len=140; ChangeStringToHexBuf(szEncode1, (*nOut1Len) *2 ,pOut1); nLeftByte = 164 + (nUrlLen + nSubject_UTF_8_Len+nSrcNumLen +msgByte )*2 - 280; //第二条短信息 szEncode2[0]='0';szEncode2[1] ='B'; // "0B" User Data Header Length (11 bytes) szEncode2[2]='0';szEncode2[3] ='5'; // "05" UDH Item Element id (Port Numbers) szEncode2[4]='0';szEncode2[5] ='4'; // "04 UDH IE length (4 bytes) szEncode2[6]='0';szEncode2[7] ='B'; // "0B" szEncode2[8]='8';szEncode2[9] ='4'; // "84" destination port number szEncode2[10]='2';szEncode2[11] ='3';// "23" szEncode2[12]='F';szEncode2[13] ='0';// "F0"origin port number szEncode2[14]='0';szEncode2[15] ='0';// "00"concatenation identifier element szEncode2[16]='0';szEncode2[17] ='3';// "03"length of params szEncode2[18]='3';szEncode2[19] ='A';// "3A"concat reference szEncode2[20]='0';szEncode2[21] ='2';// "02"total parts szEncode2[22]='0';szEncode2[23] ='2';// "01"sequence number memcpy(&szEncode2[24],&szEncode1[280],nLeftByte); *nOut2Len= 12+ nLeftByte/2 ; ChangeStringToHexBuf(szEncode2, (*nOut2Len )*2 ,pOut2); * nCount = 2 ; } else { // User Data Header: udh szEncode1[0]='0';szEncode1[1] ='6'; // "06" User Data Header Length (6 bytes) szEncode1[2]='0';szEncode1[3] ='5'; // "05" UDH Item Element id (Port Numbers) szEncode1[4]='0';szEncode1[5] ='4'; // "04 UDH IE length (4 bytes) szEncode1[6]='0';szEncode1[7] ='B'; // "0B" szEncode1[8]='8';szEncode1[9] ='4'; // "84" destination port number szEncode1[10]='2';szEncode1[11] ='3';// "23" szEncode1[12]='F';szEncode1[13] ='0';// "F0"origin port number //WSP header: ByteToHexString(nTransactionID,&szEncode1[14]);// transaction id (connectionless WSP) szEncode1[16]='0';szEncode1[17] ='6';// pdu type (06=push) szEncode1[18]='2';szEncode1[19] ='2';// Headers len //application/vnd.wap.mms-message+'0' memcpy(&szEncode1[20],"6170706C69636174696F6E2F766E642E7761702E6D6D732D6D65737361676500",0x20 * 2 ); // AF84 x-wap-application.ua szEncode1[84]='A';szEncode1[85] ='F'; szEncode1[86]='8';szEncode1[87] ='4'; // MMS Specific stuff szEncode1[88]='8';szEncode1[89] ='C'; szEncode1[90]='8';szEncode1[91] ='2'; //8C 82 message type (m-notification.ind) szEncode1[92]='9';szEncode1[93] ='8'; //98 MMS transaction ID szEncode1[94]='3';szEncode1[95] ='3'; szEncode1[96]='4';szEncode1[97] ='6'; szEncode1[98]='3';szEncode1[99] ='6'; szEncode1[100]='3';szEncode1[101] ='6'; szEncode1[102]='3';szEncode1[103] ='8'; szEncode1[104]='3';szEncode1[105] ='8'; szEncode1[106]='3';szEncode1[107] ='2'; ByteToHexString(nTransactionID,&szEncode1[108]);// transaction id (connectionless WSP) szEncode1[110]='0';szEncode1[111] ='0'; szEncode1[112]='8';szEncode1[113] ='D'; szEncode1[114]='9';szEncode1[115] ='0';// 8D90 MMS version 1.0 szEncode1[116]='8';szEncode1[117] ='9';// FROM ByteToHexString(nSrcNumLen + 1 + 1,&szEncode1[118]); // length of from szEncode1[120]='8';szEncode1[121] ='0'; // 80 address present ByteArrayToHexString(pSrcNum,nSrcNumLen,&szEncode1[122]); //发送号码 szEncode1[122+ nSrcNumLen *2 ]='0';szEncode1[123+ nSrcNumLen *2 ]='0';//00 szEncode1[124+ nSrcNumLen *2 ]='9';szEncode1[125+ nSrcNumLen *2 ]='6';//96 subject ByteArrayToHexString(pSubject_UTF_8,nSubject_UTF_8_Len,&szEncode1[126+ nSrcNumLen *2 ]);//显示标题 szEncode1[126+ (nSubject_UTF_8_Len + nSrcNumLen)*2 ]='0';szEncode1[127+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='0';//00 szEncode1[128+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[129+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='A'; szEncode1[130+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[131+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='0';//Personal message class szEncode1[132+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='8';szEncode1[133+ (nSubject_UTF_8_Len + nSrcNumLen) *2 ]='E';//msg size int msgByte=0; if(nMMSSize&0xFF000000) { sprintf(&szEncode1[136+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%08X",nMMSSize); msgByte=4; } else if(nMMSSize&0xFF0000) { sprintf(&szEncode1[136+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%06X",nMMSSize); msgByte=3; } else if(nMMSSize&0xFF00) { sprintf(&szEncode1[136+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%04X",nMMSSize); msgByte=2; } else if(nMMSSize&0xFF) { sprintf(&szEncode1[136+(nSubject_UTF_8_Len + nSrcNumLen )*2],"%02X",nMMSSize); msgByte=1; } ByteToHexString(msgByte,&szEncode1[134+ (nSubject_UTF_8_Len + nSrcNumLen) *2]); // 2 octets szEncode1[136+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[137+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='8';//88 expiry szEncode1[138+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[139+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='5';//05 expiry length szEncode1[140+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[141+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='1';//81 relative format szEncode1[142+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[143+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='3';// 3 octets szEncode1[144+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='0';szEncode1[145+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='9'; szEncode1[146+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='3';szEncode1[147+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='A'; szEncode1[148+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[149+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='0';//01 51 80: 24hrs (86400 secs) szEncode1[150+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2 ]='8';szEncode1[151+ (nSubject_UTF_8_Len+nSrcNumLen+msgByte)*2]='3';//83 content location ByteArrayToHexString(pUrl, nUrlLen ,&szEncode1[152+ (nSubject_UTF_8_Len+nSrcNumLen +msgByte) *2]); szEncode1[152+ (nSubject_UTF_8_Len + nSrcNumLen + msgByte + nUrlLen) *2 ]='0';szEncode1[153 + (nSubject_UTF_8_Len+nSrcNumLen+msgByte+nUrlLen) *2]='0';//00结束 *nOut1Len= 152/2 + 1 + nSubject_UTF_8_Len + nSrcNumLen + msgByte + nUrlLen; ChangeStringToHexBuf(szEncode1, (*nOut1Len) *2 ,pOut1); //WriteFile("mms.txt" ,szEncode1 ,(*nOut1Len) *2); } return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。