SGIP协议之Bind

来源:互联网 发布:知产律师收入 编辑:程序博客网 时间:2024/06/03 21:05

 

  

 

    /// <summary>
    /// 功能:登录网关
    /// 时间:2010年12月28日
    /// </summary> 

public class Bind
    {
        private readonly int BodyLength = 1 + 16 + 16 + 8;

        private MessageHeader msgHeader;

        /// <summary>
        /// 消息头
        /// </summary>
        public MessageHeader MsgHeader
        {
            get { return msgHeader; }
            set { msgHeader = value; }
        }

        private uint loginType;

        /// <summary>
        /// 1:SP向SMG建立的连接,用于发送命令
         ///2:SMG向SP建立的连接,用于发送命令
        ///3:SMG之间建立的连接,用于转发命令
       ///4:SMG向GNS建立的连接,用于路由表的检索和维护
       ///5:GNS向SMG建立的连接,用于路由表的更新
      ///6:主备GNS之间建立的连接,用于主备路由表的一致性
       ///11:SP与SMG以及SMG之间建立的测试连接,用于跟踪测试
        ///其它:保留

        /// </summary>
        public uint LoginType
        {
            get { return loginType; }
            set { loginType = value; }
        }

        private string loginName;

        /// <summary>
        /// 服务器端给客户端分配的登录名
        /// </summary>
        public string LoginName
        {
            get { return loginName; }
            set { loginName = value; }
        }

        private string loginPassowrd;

        /// <summary>
        /// 服务器端和Login Name对应的密码
        /// </summary>
        public string LoginPassowrd
        {
            get { return loginPassowrd; }
            set { loginPassowrd = value; }
        }

        private string reserve;

        /// <summary>
        /// 保留,扩展用
        /// </summary>
        public string Reserve
        {
            get { return reserve; }
            set { reserve = value; }
        }

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="loginType">登陆类型</param>
        /// <param name="loginName">登录账号</param>
        /// <param name="loginPassowrd">登陆密码</param>
        /// <param name="reserve">保留字</param>
        /// <param name="sequenceNumber">流水号</param>
        public Bind(uint loginType, string loginName, string loginPassowrd, string reserve, byte[] sequenceNumber)
        {
            this.msgHeader = new MessageHeader((uint)(MessageHeader.HeaderLength + BodyLength), (CommandID)CommandID.BIND, sequenceNumber);
            this.loginType = loginType;
            this.loginName = loginName;
            this.loginPassowrd = loginPassowrd;
            this.reserve = reserve;
        }

        /// <summary>
        /// 转化成byte数组
        /// </summary>
        /// <returns></returns>
        public byte[] ToBytes()
        {
            int i = 0;
            byte[] bytes = new byte[MessageHeader.HeaderLength + BodyLength];
            byte[] buffer = this.msgHeader.ToBytes();
            Util.ByteCopyToByte(buffer, 0, bytes, i, 20);
            i = i + 20;
            bytes[i++] = (byte)loginType;
            buffer = new byte[16];
            buffer = BIConvert.String2Bytes(loginName);
            Util.ByteCopyToByte(buffer, 0, bytes, i, buffer.Length);
            i = i + 16;
            buffer = new byte[16];
            buffer = BIConvert.String2Bytes(loginPassowrd);
            Util.ByteCopyToByte(buffer, 0, bytes, i, buffer.Length);
            i = i + 16;
            buffer = new byte[8];
            buffer = BIConvert.String2Bytes(reserve);
            Util.ByteCopyToByte(buffer, 0, bytes, i, buffer.Length);
            i = i + 8;
            return bytes;
        }


    }

 

 

  

原创粉丝点击