⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmpp2send.cs

📁 这是一个很好的收发短信程序 需要都尽情享用
💻 CS
字号:
namespace Glenet.CMPP
{
	using System;
	using System.Text;
	using System.Net.Sockets;
	using System.Threading;
	using Glenet.CMPP.Messages;

    public class CMPP2Send : BaseCMPP2
	{

        public CMPP2Send(string userName, string passwd, string spCode, string getwayip, int port, string serviceNo)
            : base(userName,passwd,spCode,getwayip,port,serviceNo)
        {
        }


        /// <summary>
        /// 简易发送消息
        /// </summary>
        /// <param name="Msg_Content">消息内容</param>
        /// <param name="target">消息接收多,最多,99个</param>
        /// <returns>返回消息messageID不成功返回0</returns>
        public UInt32 Submit(string Msg_Content, params string[] Dest_terminal_Id)
        {
            return Submit(1, 1, 1, 3, "9999", 0, "", 0, 0, 15, "02", "0", "", "", Msg_Content, Dest_terminal_Id);

        }
        /// <summary>
        /// 消息实体发送
        /// </summary>
        /// <param name="submit">消息实体</param>
        /// <returns>返回消息messageID不成功返回0</returns>
        public UInt32 Submit(CMPP_SUBMIT submit)
        {

            byte[] bytes = submit.ToBytes();
            if (Ns.CanWrite)
            {
                Ns.Write(bytes, 0, bytes.Length);
            }
            if (Ns.CanRead)
            {
                bytes = ResponseAsBytes(Ns, MessageHeader.Length + CMPP_SUBMIT_RESP.BodyLength, 10);
                CMPP_SUBMIT_RESP submit_resp = new CMPP_SUBMIT_RESP(bytes);
                return submit_resp.Msg_Id;
            }
            return 0;
					
        }
        /// <summary>
        ///复杂消息发送
        /// </summary>
        /// <param name="Pk_total">1 Unsigned Integer 相同Msg_Id的信息总条数,从1开始。</param>
        /// <param name="Pk_number">1 Unsigned Integer 相同Msg_Id的信息序号,从1开始。</param>
        /// <param name="Registered_Delivery">1 Unsigned Integer 是否要求返回状态确认报告:0:不需要;,1,需要</param>
        /// <param name="Msg_level">1 Unsigned Integer 信息级别。</param>
        /// <param name="Service_Id">10 Octet String 业务标识,是数字、字母和符号的组合。</param>
        /// <param name="Fee_UserType"> 0:对目的终端MSISDN计费; 1:对源终端MSISDN计费; 2:对SP计费;  3:表示本字段无效,对谁计费参见Fee_terminal_Id字段</param>
        /// <param name="Fee_terminal_Id">32 Octet String 被计费用户的号码,当Fee_UserType为3时该值有效,当Fee_UserType为0、1、2时该值无意义。</param>
        /// <param name="TP_pId"> // 1 Unsigned Integer GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.9。</param>
        /// <param name="TP_udhi">// 1 Unsigned Integer GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐。</param>
        /// <param name="Msg_Fmt">1 Unsigned Integer 信息格式: 0:ASCII串;        3:短信写卡操作;        4:二进制信息;        8:UCS2编码;        15:含GB汉字。。。。。。</param>
        /// <param name="FeeType">01:对"计费用户号码"免费;02:对"计费用户号码"按条计信息费; 03:对"计费用户号码"按包月收取信息费。</param>
        /// <param name="FeeCode">6 Octet String 资费代码(以分为单位)。</param>
        /// <param name="ValId_Time">17 Octet String 存活有效期,格式遵循SMPP3.3协议。</param>
        /// <param name="At_Time"> 17 Octet String 定时发送时间,格式遵循SMPP3.3协议。</param>
        /// <param name="Msg_Content">消息内容</param>
        /// <param name="target">消息接收多,最多,99个</param>
        /// <returns>返回消息messageID不成功返回0</returns>
        public UInt32 Submit(uint Pk_total, uint Pk_number, uint Registered_Delivery,
            uint Msg_level,
            string Service_Id,
             uint Fee_UserType,
            string Fee_terminal_Id,
            uint TP_pId,
            uint TP_udhi,
            uint Msg_Fmt,
            string FeeType,
            string FeeCode,
            string ValId_Time,
            string At_Time,
            string Msg_Content,
            params string[] Dest_terminal_Id
            )
		{
	
                    if(Ns == null)
                        throw new Exception("未建立连接");
                     if(Msg_Content.Length>65)
                         throw new Exception("信息内容过长");
	            		
						CMPP_SUBMIT submit = new CMPP_SUBMIT();
            
						//submit.Msg_Id = 0;        //      uint _Msg_Id;      // 8 Unsigned Integer 信息标识。
						submit.Pk_total = Pk_total; //      uint _Pk_total;      // 1 Unsigned Integer 相同Msg_Id的信息总条数,从1开始。
						submit.Pk_number = Pk_number; //      uint _Pk_number;     // 1 Unsigned Integer 相同Msg_Id的信息序号,从1开始。
						submit.Registered_Delivery = Registered_Delivery; //      uint _Registered_Delivery;   // 1 Unsigned Integer 是否要求返回状态确认报告:
						//      //   0:不需要;
						//      //   1:需要。
						submit.Msg_level = Msg_level;//1; //      uint _Msg_level;     // 1 Unsigned Integer 信息级别。
						submit.Service_Id = Service_Id;//"CMPP_TERMINATE"; //      string _Service_Id;     // 10 Octet String 业务标识,是数字、字母和符号的组合。
						submit.Fee_UserType = Fee_UserType; //      uint _Fee_UserType;     // 1 Unsigned Integer 计费用户类型字段:
						//      //   0:对目的终端MSISDN计费;
						//      //   1:对源终端MSISDN计费;
						//      //   2:对SP计费;
						//      //   3:表示本字段无效,对谁计费参见Fee_terminal_Id字段。
						submit.Fee_terminal_Id = Fee_terminal_Id;//"138***9565"; //      string _Fee_terminal_Id;   // 32 Octet String 被计费用户的号码,当Fee_UserType为3时该值有效,当Fee_UserType为0、1、2时该值无意义。
						//submit.Fee_terminal_type = 0; //      uint _Fee_terminal_type;   // 1 Unsigned Integer 被计费用户的号码类型,0:真实号码;1:伪码。

						submit.Tp_pId = TP_pId; //      uint _TP_pId;      // 1 Unsigned Integer GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.9。
						submit.Tp_udhi = TP_udhi; //      uint _TP_udhi;      // 1 Unsigned Integer GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐。
						submit.Msg_Fmt = Msg_Fmt; //      uint _Msg_Fmt;      // 1 Unsigned Integer 信息格式:
						//      //   0:ASCII串;
						//      //   3:短信写卡操作;
						//      //   4:二进制信息;
						//      //   8:UCS2编码;
						//      //   15:含GB汉字。。。。。。
						submit.Msg_src = SpCode;//spadd;//; //      string _Msg_src;     // 6 Octet String 信息内容来源(SP_Id)。
						submit.FeeType = FeeType; //      string _FeeType;     // 2 Octet String 资费类别:
						//      //   01:对"计费用户号码"免费;
						//      //   02:对"计费用户号码"按条计信息费;
						//      //   03:对"计费用户号码"按包月收取信息费。
						submit.FeeCode = FeeCode; //      string _FeeCode;     // 6 Octet String 资费代码(以分为单位)。
						//Why not 17?
						submit.ValId_Time = ValId_Time;//Util.Get_MMDDHHMMSS_String(DateTime.Now.AddHours(2)) + "032+"; //      string _ValId_Time;     // 17 Octet String 存活有效期,格式遵循SMPP3.3协议。
						submit.At_Time = At_Time;//Util.Get_MMDDHHMMSS_String(DateTime.Now) + "032+"; //      string _At_Time;     // 17 Octet String 定时发送时间,格式遵循SMPP3.3协议。
						//spnum
						submit.Src_Id = ServiceNo;//; //      string _Src_Id;      // 21 Octet String 源号码。SP的服务代码或前缀为服务代码的长号码, 网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,该号码最终在用户手机上显示为短消息的主叫号码。

						submit.Dest_terminal_Id =  Dest_terminal_Id; //      string[] _Dest_terminal_Id;   // 32*DestUsr_tl Octet String 接收短信的MSISDN号码。
						submit.DestUsr_tl = (uint) submit.Dest_terminal_Id.Length; //      uint _DestUsr_tl;     // 1 Unsigned Integer 接收信息的用户数量(小于100个用户)。

						//
						//
						//submit.Dest_terminal_type = 0; //      uint _Dest_terminal_type;   // 1 Unsigned Integer 接收短信的用户的号码类型,0:真实号码;1:伪码。
						 //      uint _Msg_Length;     // 1 Unsigned Integer 信息长度(Msg_Fmt值为0时:<160个字节;其它<=140个字节),取值大于或等于0。
						submit.Msg_Content = Msg_Content; //      string _Msg_Content;    // Msg_length Octet String 信息内容。
						//submit.Msg_Length = uint.Parse(submit.Msg_Content.Length.ToString()) ;
						submit.LinkId = ""; //      string _LinkID;      // 20 Octet String 点播业务使用的LinkID,非点播类业务的MT流程不使用该字段。

                        return Submit(submit);
			
		}
       
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -