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

📄 sgip.cs

📁 联通的SGIP发送代码
💻 CS
📖 第 1 页 / 共 5 页
字号:
        //2:SMG向SP建立的连接,用于发送命令
        //3:SMG之间建立的连接,用于转发命令
        //4:SMG向GNS建立的连接,用于路由表的检索和维护
        //5:GNS向SMG建立的连接,用于路由表的更新
        //6:主备GNS之间建立的连接,用于主备路由表的一致性
        //11:SP与SMG以及SMG之间建立的测试连接,用于跟踪测试
        //其它:保留
        /// </summary>
        public byte LoginType
        {
            get { return _loginType; }
            set { _loginType = value; }
        }

        /// <summary>
        /// 服务器分配的登录名,最长为16
        /// </summary>
        public string LoginName
        {
            get { return _loginName; }
            set
            {
                SgipHelper.CheckMaxBytes(value, 16);
                _loginName = value;
            }
        }

        /// <summary>
        /// 密码
        /// </summary>
        public string LoginPassword
        {
            get { return _loginPassword; }
            set
            {
                SgipHelper.CheckMaxBytes(value, 16);
                _loginPassword = value;
            }
        }

        /// <summary>
        /// 保留,最多8个字节
        /// </summary>
        public byte[] Reserved
        {
            get { return _reserved; }
            set
            {
                SgipHelper.CheckMaxBytes(value, 8);
                _reserved = value;
            }
        }

        public override int GetLength()
        {
            return 41;
        }

        public override byte[] GetBytes()
        {
            byte[] result = new byte[this.GetLength()];
            int nIndex = 0;
            result[nIndex++] = _loginType;
            Encoding.ASCII.GetBytes(_loginName).CopyTo(result, nIndex);    //_loginName
            nIndex += 16;
            Encoding.ASCII.GetBytes(_loginPassword).CopyTo(result, nIndex); //_loginPassword
            nIndex += 16;
            _reserved.CopyTo(result, nIndex); //_reserved            
            return result;
        }

        internal override void ReadFromBytes(byte[] buffer, int startIndex)
        {
            int nIndex = startIndex;
            _loginType = buffer[nIndex++];
            _loginName = SgipHelper.GetASCIIString(buffer, nIndex, 16);           
            nIndex += 16;
            _loginPassword = SgipHelper.GetASCIIString(buffer, nIndex, 16);
            nIndex += 16;
            Buffer.BlockCopy(buffer, nIndex, _reserved, 0, 8);
        }

        public Bind()
        {
        }

        public Bind(byte bLoginType, string strLoginName, string strLoginPwd)
        {
            LoginType = bLoginType;
            LoginName = strLoginName;
            LoginPassword = strLoginPwd;
        }
    }

    public class Bind_Resp : ResponseBody
    {
        public override uint GetCommandID()
        {
            return Command.SGIP_BIND_RESP;
        }
    };

    public class Unbind: Body
    {
        public override uint GetCommandID()
        {
            return Command.SGIP_UNBIND;
        }
    }

    public class Unbind_Resp : Body
    {
        public override uint GetCommandID()
        {
            return Command.SGIP_UNBIND_RESP;
        }
    }

    public class Submit: Body
    {
        public override uint GetCommandID()
        {
            return Command.SGIP_SUBMIT;
        }

     #region private members
        private string _spNumber = ""; //21, SP的接入号码(=特服号=服务代码)
        private string _chargeNumber = ""; //21, 付费号码,手机号码前加"86"国别标志;当且仅当群发且对用户收费时为空;如果为空,则该条短消息产生的费用由UserNumber代表的用户支付;如果为全零字符串"000000000000000000000",表示该条短消息产生的费用由SP支付。
        private byte _userCount; //1, 接收短消息的手机数量,取值范围1至100
        private UserNumber _userNumber = new UserNumber(); //21 * _userCount, 接收该短消息的手机号,该字段重复UserCount指定的次数,手机号码前加"86"国别标志
        private string _corpID = ""; //5, 企业代码,取值范围0-99999
        private string _serviceType = ""; //10, 业务代码,由SP定义
        private byte _feeType;      //1, 计费类型
        private string _feeValue = "";   //6, 取值范围0-99999,该条短消息的收费值,单位为分,由SP定义,对于包月制收费的用户,该值为月租费的值
        private string _givenValue = ""; //6, 取值范围0-99999,赠送用户的话费,单位为分,由SP定义,特指由SP向用户发送广告时的赠送话费
        private byte _agentFlag;    //1, 代收费标志,0:应收;1:实收
        private byte _morelatetoMTFlag;  //1, 引起MT消息的原因:0-MO点播引起的第一条MT消息;1-MO点播引起的非第一条MT消息;2-非MO点播引起的MT消息;3-系统反馈引起的MT消息。
        private byte _priority;         //1, 优先级0-9从低到高,默认为0
        private string _expireTime = "";     //16, 短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,格式为"yymmddhhmmsstnnp" ,其中"tnnp"取固定值"032+",即默认系统为北京时间
        private string _scheduleTime = "";   //16, 短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,格式为"yymmddhhmmsstnnp" ,其中"tnnp"取固定值"032+",即默认系统为北京时间
        private byte _reportFlag;     //1, 状态报告标记0-该条消息只有最后出错时要返回状态报告1-该条消息无论最后是否成功都要返回状态报告2-该条消息不需要返回状态报告3-该条消息仅携带包月计费信息,不下发给用户,要返回状态报告其它-保留缺省设置为0
        private byte _TP_pid;         //1, GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9
        private byte _TP_udhi;        //1, GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
        private byte _messageCoding;  //1, 短消息的编码格式。0:纯ASCII字符串 3:写卡操作 4:二进制编码 8:UCS2编码 15: GBK编码 其它参见GSM3.38第4节:SMS Data Coding Scheme
        private byte _messageType;    //1, 信息类型:0-短消息信息,其它:待定
        private uint _messageLength = 140;   //4, 默认为140,短消息的长度
        private string _messageContent = ""; //_messageLength, 短消息的内容
        private byte[] _reserved = new byte[8];      //8, 保留,扩展用
     #endregion

     #region public propertys

        /// <summary>
        /// SP的接入号码(=特服号=服务代码)
        /// </summary>
        public string SPNumber
        {
            get { return _spNumber;}
            set
            {
                SgipHelper.CheckMaxBytes(value, 21);
                _spNumber = value;
            }
        }

        /// <summary>
        /// 付费号码,手机号码前加"86"国别标志;当且仅当群发且对用户收费时为空;如果为空,则该条短消息产生的费用由UserNumber代表的用户支付;如果为全零字符串"000000000000000000000",表示该条短消息产生的费用由SP支付。
        /// </summary>
        public string ChargeNumber
        {
            get { return _chargeNumber;}
            set
            {
                SgipHelper.CheckMaxBytes(value, 21);
                _chargeNumber = SgipHelper.Prefix86ForMobilbeNumber(value);
            }
        }

        /// <summary>
        /// 接收短消息的手机数量,取值范围1至100
        /// </summary>
        public byte UserCount
        {
            get
            {
                return _userCount;
            }
            set
            {
                _userCount = value;
            }
        }

        /// <summary>
        /// 接收该短消息的手机号,该字段重复UserCount指定的次数,手机号码前加"86"国别标志(SgipHelper.Prefix86ForMobilbeNumber(value))
        /// </summary>
        public UserNumber UserNumber
        {
            get { return _userNumber; }
            set { _userNumber = value; }
        }

        /// <summary>
        /// 企业代码,取值范围0-99999
        /// </summary>
        public string CorpID
        {
            get { return _corpID; }
            set
            {
                SgipHelper.CheckMaxBytes(value, 5);
                _corpID = value;
            }
        }

        /// <summary>
        /// 业务代码,由SP定义
        /// </summary>
        public string ServiceType
        {
            get { return _serviceType; }
            set
            {
                SgipHelper.CheckMaxBytes(value, 10);
                _serviceType = value;
            }
        }

        /// <summary>
        /// 计费类型
        /// </summary>
        public byte FeeType
        {
            get 
            { 
                return _feeType; 
            }
            set
            {
                _feeType = value;
            }
        }

        /// <summary>
        /// 取值范围0-99999,该条短消息的收费值,单位为分,由SP定义,对于包月制收费的用户,该值为月租费的值
        /// </summary>
        public string FeeValue
        {
            get { return _feeValue; }
            set
            {
                SgipHelper.CheckMaxBytes(value, 6);
                _feeValue = value;
            }
        }

        /// <summary>
        /// 取值范围0-99999,赠送用户的话费,单位为分,由SP定义,特指由SP向用户发送广告时的赠送话费
        /// </summary>
        public string GivenValue
        {
            get { return _givenValue; }
            set
            {
                SgipHelper.CheckMaxBytes(value, 6);
                _givenValue = value;
            }
        }

        /// <summary>
        /// 代收费标志,0:应收;1:实收
        /// </summary>
        public byte AgentFlag
        {
            get
            {
                return _agentFlag;
            }
            set
            {
                _agentFlag = value;
            }
        }

        /// <summary>
        /// 引起MT消息的原因:0-MO点播引起的第一条MT消息;1-MO点播引起的非第一条MT消息;2-非MO点播引起的MT消息;3-系统反馈引起的MT消息。
        /// </summary>
        public byte MorelatetoMTFlag
        {
            get
            {
                return _morelatetoMTFlag;
            }
            set
            {
                _morelatetoMTFlag = value;
            }
        }

        /// <summary>
        /// 优先级0-9从低到高,默认为0
        /// </summary>
        public byte Priority
        {
            get
            {
                return _priority;
            }
            set
            {
                _priority = value;
            }
        }

        /// <summary>
        /// 短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,格式为"yymmddhhmmsstnnp" ,其中"tnnp"取固定值"032+",即默认系统为北京时间
        /// </summary>
        public string ExpireTime
        {
            get { return _expireTime; }
            set
            {
                SgipHelper.CheckMaxBytes(value, 16);
                _expireTime = value;
            }
        }

        /// <summary>
        /// 短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,格式为"yymmddhhmmsstnnp" ,其中"tnnp"取固定值"032+",即默认系统为北京时间
        /// </summary>
        public string ScheduleTime
        {
            get { return _scheduleTime; }
            set
            {
                SgipHelper.CheckMaxBytes(value, 16);
                _scheduleTime = value;
            }
        }

        /// <summary>
        /// 状态报告标记 0-该条消息只有最后出错时要返回状态报告 1-该条消息无论最后是否成功都要返回状态报告 2-该条消息不需要返回状态报告 3-该条消息仅携带包月计费信息,不下发给用户,要返回状态报告其它-保留缺省设置为0
        /// </summary>
        public byte ReportFlag
        {
            get 
            {
                return _reportFlag;
            }
            set
            {
                _reportFlag = value;
            }
        }

        /// <summary>
        /// GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9
        /// </summary>
        public byte TP_pid
        {
            get
            {

⌨️ 快捷键说明

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