• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            C++中的一粒沙子
            學(xué)習(xí)C++,做應(yīng)用開發(fā)
            posts - 10,comments - 22,trackbacks - 0
            ?? 當(dāng)SP端和ISMG端建立Connect連接后,我們就要開始發(fā)送短信了,而Submit操作的目的是SP在與ISMG建立應(yīng)用層連接后向ISMG提交短信。ISMG以Submit_Resp消息響應(yīng)。下面還是要看它的消息定義:

            字段名

            字節(jié)數(shù)

            屬性

            描述

            Msg_Id

            8

            Unsigned Integer

            信息標(biāo)識(shí)。

            Pk_total

            1

            Unsigned Integer

            相同Msg_Id的信息總條數(shù),從1開始。

            Pk_number

            1

            Unsigned Integer

            相同Msg_Id的信息序號(hào),從1開始。

            Registered_Delivery

            1

            Unsigned Integer

            是否要求返回狀態(tài)確認(rèn)報(bào)告:

            0:不需要;

            1:需要。

            Msg_level

            1

            Unsigned Integer

            信息級(jí)別。

            Service_Id

            10

            Octet String

            業(yè)務(wù)標(biāo)識(shí),是數(shù)字、字母和符號(hào)的組合。

            Fee_UserType

            1

            Unsigned Integer

            計(jì)費(fèi)用戶類型字段:

            0:對(duì)目的終端MSISDN計(jì)費(fèi);

            1:對(duì)源終端MSISDN計(jì)費(fèi);

            2:對(duì)SP計(jì)費(fèi);

            3:表示本字段無(wú)效,對(duì)誰(shuí)計(jì)費(fèi)參見(jiàn)Fee_terminal_Id字段。

            Fee_terminal_Id

            32

            Octet String

            被計(jì)費(fèi)用戶的號(hào)碼,當(dāng)Fee_UserType3時(shí)該值有效,當(dāng)Fee_UserType012時(shí)該值無(wú)意義。

            Fee_terminal_type

            1

            Unsigned Integer

            被計(jì)費(fèi)用戶的號(hào)碼類型,0:真實(shí)號(hào)碼;1:偽碼。

            TP_pId

            1

            Unsigned Integer

            GSM協(xié)議類型。詳細(xì)是解釋請(qǐng)參考GSM03.40中的9.2.3.9

            TP_udhi

            1

            Unsigned Integer

            GSM協(xié)議類型。詳細(xì)是解釋請(qǐng)參考GSM03.40中的9.2.3.23,僅使用1位,右對(duì)齊。

            Msg_Fmt

            1

            Unsigned Integer

            信息格式:

            0ASCII串;

            3:短信寫卡操作;

            4:二進(jìn)制信息;

            8UCS2編碼;

            15:含GB漢字。。。。。。

            Msg_src

            6

            Octet String

            信息內(nèi)容來(lái)源(SP_Id)

            FeeType

            2

            Octet String

            資費(fèi)類別:

            01:對(duì)“計(jì)費(fèi)用戶號(hào)碼”免費(fèi);

            02:對(duì)“計(jì)費(fèi)用戶號(hào)碼”按條計(jì)信息費(fèi);

            03:對(duì)“計(jì)費(fèi)用戶號(hào)碼”按包月收取信息費(fèi)。

            FeeCode

            6

            Octet String

            資費(fèi)(以分為單位)。

            ValId_Time

            17

            Octet String

            存活有效期,格式遵循SMPP3.3協(xié)議。

            At_Time

            17

            Octet String

            定時(shí)發(fā)送時(shí)間,格式遵循SMPP3.3協(xié)議。

            Src_Id

            21

            Octet String

            源號(hào)碼。SP的服務(wù)代碼或前綴為服務(wù)代碼的長(zhǎng)號(hào)碼, 網(wǎng)關(guān)將該號(hào)碼完整的填到SMPP協(xié)議Submit_SM消息相應(yīng)的source_addr字段,該號(hào)碼最終在用戶手機(jī)上顯示為短消息的主叫號(hào)碼。

            DestUsr_tl

            1

            Unsigned Integer

            接收信息的用戶數(shù)量(小于100個(gè)用戶)

            Dest_terminal_Id

            32*DestUsr_tl

            Octet String

            接收短信的MSISDN號(hào)碼。

            Dest_terminal_type

            1

            Unsigned Integer

            接收短信的用戶的號(hào)碼類型,0:真實(shí)號(hào)碼;1:偽碼。

            Msg_Length

            1

            Unsigned Integer

            信息長(zhǎng)度(Msg_Fmt值為0時(shí):<160個(gè)字節(jié);其它<=140個(gè)字節(jié)),取值大于或等于0

            Msg_Content

            Msg_length

            Octet String

            信息內(nèi)容。

            LinkID

            20

            Octet String

            點(diǎn)播業(yè)務(wù)使用的LinkID,非點(diǎn)播類業(yè)務(wù)的MT流程不使用該字段。

            有上面的定義就可以寫出代碼了,如下:

            void?Ccmpp_API::CmppSend(const?char?*tempMsgSrc,?const?char?*tempFeeType,?const?char?*tempFeeCode,?const?char?*tempSrcId,
            ?????????????????????????
            const?char?*tempDestTerminalId,?const?char?*tempMsgContent,const?char?*tempServiceId,
            ?????????????????????????
            char?tempPKTotal,?char?tempPKNumber,?char?tempRegisteredDelivery,char?tempMsgLevel,
            ?????????????????????????
            char?tempFeeUserType,char?tempTpPid,char?tempTpUdhi,char?tempMsgFmt,char?tempDstUsrTl)
            {
            ????
            char?netBuffer[400];
            ????CMPP_SUBMIT?
            *?buffer;
            ????buffer?
            =?(CMPP_SUBMIT*)netBuffer;
            ????memset(buffer,?
            0,?400);

            ????buffer
            ->nTotalLength?=?htonl(195?+?strlen(tempMsgContent));
            ????buffer
            ->nCommandId?=?htonl(CMPP_SUBMIT_tag);
            ????
            ????
            if?(sequenceid?==?123456789i32)
            ????
            {
            ???????sequenceid?
            =?1;
            ????}

            ????
            else
            ????
            {
            ???????sequenceid
            ++;
            ????}

            ????buffer
            ->nSeqId?=?htonl(sequenceid);

            ????buffer
            ->uchPkTotal?=?tempPKTotal;
            ????buffer
            ->uchPkNumber?=?tempPKNumber;
            ????buffer
            ->uchRegisteredDelivery?=?tempRegisteredDelivery;//目前不需要返回狀態(tài)確認(rèn)報(bào)告
            ????buffer->uchMsgLevel?=?tempMsgLevel;

            ????memcpy(buffer
            ->sServiceId,?tempServiceId,?strlen(tempServiceId));
            ????buffer
            ->uchFeeUserType?=?tempFeeUserType;
            ????memcpy(buffer
            ->sFeeTerminalId,?"?",?0);//不知道此字段的意思,胡亂添的一個(gè)字段
            ????
            ????buffer
            ->uchTpPid?=?tempTpPid;
            ????buffer
            ->uchTpUdhi?=?tempTpUdhi;
            ????buffer
            ->uchMsgFmt?=?tempMsgFmt;
            ????????
            ????memcpy(buffer
            ->sMsgSrc,?tempMsgSrc,?strlen(tempMsgSrc));
            ????memcpy(buffer
            ->sFeeType,?tempFeeType,?strlen(tempFeeType));
            ????memcpy(buffer
            ->sFeeCode,?tempFeeCode,?strlen(tempFeeCode));
            ????memcpy(buffer
            ->sValidTime,?"?",0);
            ????memcpy(buffer
            ->sAtTime,?"?",?0);
            ????memcpy(buffer
            ->sSrcId,?tempSrcId,?strlen(tempSrcId));
            ????buffer
            ->uchDstUsrTl?=?tempDstUsrTl;
            ????buffer
            ->uchMsgLength?=?strlen(tempMsgContent);
            ????memcpy(buffer
            ->sDstTerminalId,?tempDestTerminalId,?strlen(tempDestTerminalId));
            ????memcpy(buffer
            ->sMsgContent,?tempMsgContent,?strlen(tempMsgContent));

            ????
            //LinkId字段沒(méi)有填,此處是空,以后再添

            ????CmppSocket.Send(buffer,?
            195?+?strlen(tempMsgContent),?0);
            ????Sleep(
            100);
            ????
            return;
            }

            ? 目前這個(gè)代碼寫的還是很不好,這個(gè)軟件是我畢業(yè)后第一次所寫的代碼,所以很不規(guī)范,希望大家見(jiàn)諒!我一直想用STL把它再實(shí)現(xiàn)一遍,苦于現(xiàn)在沒(méi)有時(shí)間,等有時(shí)間一定寫完它!希望和在這方面有了解的朋友多交流。

            ?


            posted on 2006-03-20 20:43 炙熱的太陽(yáng) 閱讀(1865) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久久久久综合一区中文字幕| 亚洲午夜精品久久久久久人妖| 久久久久亚洲AV综合波多野结衣 | 久久这里只有精品首页| 日韩精品久久久久久| 久久午夜综合久久| 久久亚洲美女精品国产精品| 大美女久久久久久j久久| 亚洲精品成人久久久| 色综合久久久久久久久五月| 久久免费线看线看| 久久久久久久91精品免费观看| 久久久无码精品亚洲日韩蜜臀浪潮| 国产精品午夜久久| 国产美女久久精品香蕉69| 日日狠狠久久偷偷色综合免费| 2021国产精品久久精品| 99久久婷婷国产综合精品草原| 久久亚洲精品国产亚洲老地址 | 色婷婷综合久久久久中文字幕| 久久无码人妻一区二区三区午夜| 久久精品国产欧美日韩| 久久99国产综合精品女同| 国产精品成人久久久| 色综合久久最新中文字幕| 久久成人国产精品免费软件| 久久精品国产第一区二区| 99久久国产综合精品麻豆| 久久无码人妻一区二区三区| 久久精品国产亚洲AV香蕉| 欧美一级久久久久久久大| 精品久久人人爽天天玩人人妻| 久久久久综合网久久| 99久久精品国产高清一区二区| 亚洲AV无码久久精品成人| 一本久道久久综合狠狠躁AV| 久久综合亚洲色HEZYO国产| 久久国产免费直播| 久久久久九九精品影院| 久久影视国产亚洲| 亚洲国产精品成人AV无码久久综合影院 |