/// <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; } } |