亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? basecommand.cs

?? 短信串口通信 于短信網關通信協議的封裝 C#實現的類庫
?? CS
字號:
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Net.Sockets;
using System.Net;
using JeasonZhao.Sms.SGIP.Exceptions;
using JeasonZhao.Sms.BaseModule;

namespace JeasonZhao.Sms.SGIP.Command
{

    public class BaseCommand
    {
        public DelegateSocketInformation DebugHandler = null;

        #region Members
        private uint m_nPackageLength = 20;
        private Commands m_nCommand = Commands.Bind;
        private uint m_nSrcNodeSequence = 0;
        private uint m_nDateSequence = 0;
        private uint m_nMsgSequence = 0;
        #endregion
        public BaseCommand(Commands cmd)
        {
            m_nCommand = cmd;
        }
        public void CopyHeader(BaseCommand cmd)
        {
            //m_nCommand = cmd.Command;
            m_nDateSequence = cmd.m_nDateSequence;
            m_nMsgSequence = cmd.m_nMsgSequence;
            m_nPackageLength = cmd.m_nPackageLength;
            m_nSrcNodeSequence = cmd.m_nSrcNodeSequence;
        }
        #region Properties
        /// <summary>
        /// Message Length	 4	 Integer	消息的總長度(字節)
        /// </summary>
        [SmsField(true, 0, 4)]
        public uint PackageLength
        {
            get { return m_nPackageLength; }
            set { m_nPackageLength = value; }
        }
        /// <summary>
        /// Command ID	     4	 Integer	命令ID
        /// </summary>
        [SmsField(true, 1, 4)]
        public Commands Command
        {
            get { return m_nCommand; }
            set { m_nCommand = value; }
        }
        /// <summary>
        /// 1/3 Sequence Number	 12	 Integer	序列號
        /// </summary>
        [SmsField(true, 2, 4)]
        public uint SrcNodeSequence
        {
            get { return m_nSrcNodeSequence; }
            set { m_nSrcNodeSequence = value; }
        }
        /// <summary>
        /// 2/3 Sequence Number	 12	 Integer	序列號
        /// </summary>
        [SmsField(true, 3, 4)]
        public uint DateSequence
        {
            get { return m_nDateSequence; }
            set { m_nDateSequence = value; }
        }
        /// <summary>
        /// 3/3 Sequence Number	 12	 Integer	序列號
        /// </summary>
        [SmsField(true, 4, 4)]
        public uint MsgSequence
        {
            get { return m_nMsgSequence; }
            set { m_nMsgSequence = value; }
        }
        #endregion
        #region SendPackage
        private int WriteUint(System.Net.Sockets.Socket socket, uint nValue)
        {
            byte[] bArray = new byte[4];
            bArray[3] = (byte)(nValue & 0xFF);
            bArray[2] = (byte)((nValue >> 8) & 0xFF);
            bArray[1] = (byte)((nValue >> 16) & 0xFF);
            bArray[0] = (byte)((nValue >> 24) & 0xFF);
            return socket.Send(bArray);
        }
        private int WriteByte(System.Net.Sockets.Socket socket, uint n)
        {
            byte[] bArray = new byte[1];
            bArray[0] = (byte)n;
            return socket.Send(bArray);
        }
        private byte ReadByte(System.Net.Sockets.Socket socket)
        {
            byte[] bArray = new byte[1];
            if (socket.Receive(bArray) != 1)
            {
                throw new Exception("讀取整數錯誤,讀取字節數不等于1");
            }
            return bArray[0];
        }
        protected uint ReadUint(Socket sock)
        {
            byte[] bArray = new byte[4];
            if (sock.Receive(bArray) != 4)
            {
                throw new Exception("讀取整數錯誤,讀取字節數不等于4");
            }
            uint nValue = 0;
            nValue ^= bArray[0];
            nValue = nValue << 8;
            nValue ^= bArray[1];
            nValue = nValue << 8;
            nValue ^= bArray[2];
            nValue = nValue << 8;
            nValue ^= bArray[3];
            return nValue;
        }
        public bool SendPackage(System.Net.Sockets.Socket socket)
        {
            if (m_nMsgSequence < 1)
            {
                this.m_nMsgSequence = CommandFactory.GetNewMsgSequence();
            }
            if (m_nDateSequence < 1)
            {
                uint lf = (uint)(DateTime.Now.Month * 100000000 +
                    DateTime.Now.Day * 1000000 +
                    DateTime.Now.Hour * 10000 +
                    DateTime.Now.Minute * 100 +
                    DateTime.Now.Second);
                m_nDateSequence = lf;
            }
            if (checkPackage() == false)
            {
                return false;
            }
            List<PropertyPackage> allHeaders = GetProperties(true);
            List<PropertyPackage> allBodys = GetProperties(false);
            uint nPackageLength = 0;
            foreach (PropertyPackage p in allHeaders)
            {
                nPackageLength += p.Length;
            }
            foreach (PropertyPackage p in allBodys)
            {
                nPackageLength += p.Length;
            }
            this.m_nPackageLength = nPackageLength;

            foreach (PropertyPackage p in allHeaders)
            {
                if (WriteProperties(socket, p) == false)
                {
                    return false;
                }
            }
            foreach (PropertyPackage p in allBodys)
            {
                if (WriteProperties(socket, p) == false)
                {
                    return false;
                }
            }
            return true;
        }
        protected virtual bool WriteProperties(Socket sock, PropertyPackage pack)
        {
            try
            {
                if (null == sock || null == pack)
                {
                    return false;
                }
                //重新設置參數值
                pack.ReBuildPackage();
                //Debug("傳送參數 " + pack.ToString());
                if (pack.PackageDataType == PackageDataTypes.Uint)
                {
                    return WriteUint(sock, pack.UIntValue) == 4;
                }
                else if (pack.PackageDataType == PackageDataTypes.Byte)
                {
                    return WriteByte(sock, pack.UIntValue) == 1;
                }
                else
                {
                    string sValue = pack.StringValue;
                    if (null == sValue)
                    {
                        sValue = "";
                    }
                    int nLength = pack.Attribute.Length;
                    byte[] bStringArray = System.Text.Encoding.Default.GetBytes(sValue);
                    if (nLength <= 0)
                    {
                        nLength = bStringArray.Length;
                    }
                    byte[] bSend = new byte[nLength];
                    for (int n = 0; n < bSend.Length; n++)
                    {
                        if (n < bStringArray.Length)
                        {
                            bSend[n] = bStringArray[n];
                        }
                        else
                        {
                            bSend[n] = 0;
                        }
                    }
                    return sock.Send(bSend) == nLength;
                }
            }
            catch (Exception exce)
            {
                throw new WritePackageException(pack, exce);
            }
        }
        #endregion
        #region Read Package
        public void ReadHeader(System.Net.Sockets.Socket socket)
        {
            foreach (PropertyPackage pack in GetProperties(true))
            {
                ReadProperties(socket, pack);
            }
            //this.Debug("讀?。号袛喟^信息 " + this.Command);
        }
        protected virtual void ReadProperties(Socket sock, PropertyPackage pack)
        {
            try
            {

                if (null == sock || null == pack)
                {
                    return;
                }
                int nLength = pack.Attribute.Length;
                if (pack.PackageDataType == PackageDataTypes.Uint)
                {
                    uint value = ReadUint(sock);
                    pack.Property.SetValue(this, value, null);
                    //Debug("讀取屬性 " + pack.Property.Name + "(" + pack.PackageDataType + ") " + value);
                }
                else if (pack.PackageDataType == PackageDataTypes.Byte)
                {
                    byte value = ReadByte(sock);
                    pack.Property.SetValue(this, value, null);
                    //Debug("讀取屬性 " + pack.Property.Name + " (" + pack.PackageDataType + ")" + value);
                }
                else
                {
                    string sValue = ReadString(sock, nLength);
                    pack.Property.SetValue(this, sValue, null);
                    //Debug("讀取屬性 " + pack.Property.Name + " (" + pack.PackageDataType + ")" + sValue);
                }
            }
            catch (Exception e)
            {
                throw new ReadPackageException(pack, e);
            }
        }
        public void ReadBody(System.Net.Sockets.Socket socket)
        {
            foreach (PropertyPackage pack in GetProperties(false))
            {
                ReadProperties(socket, pack);
            }
        }

        protected string ReadString(Socket sock, int nLen)
        {
            byte[] bArray = new byte[nLen];
            int nRead = sock.Receive(bArray);
            if (nRead != nLen)
            {
                throw new Exception("讀取字符串錯誤,讀取字節數" + nRead + "不等于" + nLen);
            }
            int n = 0;
            foreach (byte b in bArray)
            {
                if (b == 0)
                {
                    break;
                }
                n++;
            }
            byte[] aNew = new byte[n];
            for (int x = 0; x < n && x < bArray.Length; x++)
            {
                aNew[x] = bArray[x];
            }
            return System.Text.Encoding.Default.GetString(aNew);
        }


        public override string ToString()
        {
            String str = "";
            foreach (PropertyInfo pInfo in this.GetType().GetProperties())
            {
                bool bFound = false;
                SmsFieldAttribute smsAttr = null;
                foreach (Attribute attr in pInfo.GetCustomAttributes(false))
                {
                    if (attr.GetType() == typeof(SmsFieldAttribute))
                    {
                        smsAttr = attr as SmsFieldAttribute;
                        bFound = true;
                        break;
                    }
                }
                if (bFound && pInfo.CanRead)
                {
                    Object obj = pInfo.GetValue(this, null);
                    str += "[" + pInfo.Name + "=" + obj + "]";

                }
            }
            return str;
        }
        public List<PropertyInfo> GetAllFields()
        {
            List<PropertyInfo> ret = new List<PropertyInfo>();
            foreach (PropertyInfo pInfo in this.GetType().GetProperties())
            {
                bool bFound = false;
                SmsFieldAttribute smsAttr = null;
                foreach (Attribute attr in pInfo.GetCustomAttributes(false))
                {
                    if (attr.GetType() == typeof(SmsFieldAttribute))
                    {
                        smsAttr = attr as SmsFieldAttribute;
                        bFound = true;
                        break;
                    }
                }
                if (bFound)
                {
                    System.Console.WriteLine("fieldInfo " + pInfo.Name + "  " +
                        "[" + pInfo.PropertyType + "]" +
                        smsAttr.IsHeader + smsAttr.Order);
                    if (pInfo.CanRead)
                    {
                        Object obj = pInfo.GetValue(this, null);
                        System.Console.WriteLine("Values   " + (obj == null ? "NULL" : obj));
                    }
                    ret.Add(pInfo);
                }
            }
            return ret;
        }
        public List<PropertyPackage> GetProperties(bool bHeader)
        {
            PropertyInfo[] allPropertys = new PropertyInfo[255];
            SmsFieldAttribute[] allAttributes = new SmsFieldAttribute[255];
            int nRealGetCount = 0;
            foreach (PropertyInfo pInfo in this.GetType().GetProperties())
            {
                bool bFound = false;
                SmsFieldAttribute smsAttr = null;
                foreach (Attribute attr in pInfo.GetCustomAttributes(false))
                {
                    if (attr.GetType() == typeof(SmsFieldAttribute))
                    {
                        smsAttr = attr as SmsFieldAttribute;
                        bFound = true;
                        break;
                    }
                }
                if (bFound &&
                    smsAttr.IsHeader == bHeader)
                {
                    int nIndex = smsAttr.Order;

                    allPropertys[nIndex] = pInfo;
                    allAttributes[nIndex] = smsAttr;

                    nRealGetCount++;
                }
            }
            List<PropertyPackage> ret = new List<PropertyPackage>();
            for (int nIndex = 0; nIndex < nRealGetCount; nIndex++)
            {
                if (allPropertys[nIndex] == null || allAttributes[nIndex] == null)
                {
                    throw new ApplicationException("數據報文定義錯誤,沒有定義" + (nIndex + 1) + " 的元素!");
                }
                ret.Add(new PropertyPackage(this, allPropertys[nIndex], allAttributes[nIndex]));
            }
            return ret;
        }
        protected virtual bool checkPackage()
        {
            if (m_nDateSequence <= 0)
            {
                throw new InvalidPackageException("日期序列號不合法!");
            }
            if (m_nMsgSequence < 0)
            {
                throw new InvalidPackageException("消息序列號不合法!");
            }
            if (m_nSrcNodeSequence < 0)
            {
                throw new InvalidPackageException("節點序列號不合法!");
            }
            return true;
        }
        #endregion
        #region Debug
        private void Debug(String str)
        {
            try
            {
                if (null == DebugHandler)
                {
                    System.Console.WriteLine(str);
                }
                else
                {
                    DebugHandler(str);
                }
            }
            catch (Exception)
            {
            }
        }
        #endregion
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本免费新一区视频| 岛国一区二区三区| 国产ts人妖一区二区| 欧美偷拍一区二区| 国产女人18毛片水真多成人如厕| 亚洲欧美电影一区二区| 久久99热99| 欧美性猛片aaaaaaa做受| 国产女同性恋一区二区| 奇米精品一区二区三区四区 | 国产精品一区二区三区乱码| 在线免费观看不卡av| 久久久精品一品道一区| 日本v片在线高清不卡在线观看| 91在线精品秘密一区二区| 精品国精品国产尤物美女| 亚洲第一主播视频| 色狠狠一区二区三区香蕉| 国产精品传媒视频| 国产成人综合网站| 久久网这里都是精品| 久久精品国产第一区二区三区| 欧洲精品一区二区| 一区二区三区不卡在线观看| 成人黄动漫网站免费app| 久久综合一区二区| 国内外成人在线视频| 日韩三级视频中文字幕| 蜜臀a∨国产成人精品| 欧美日高清视频| 日韩精品亚洲一区二区三区免费| 色婷婷国产精品久久包臀| 亚洲天堂免费看| 色噜噜狠狠一区二区三区果冻| 亚洲视频一区二区免费在线观看| 国产一区二区三区黄视频| 精品国产三级电影在线观看| 久久国产精品99久久久久久老狼| 日韩精品在线一区二区| 国产做a爰片久久毛片| 欧美激情艳妇裸体舞| 99亚偷拍自图区亚洲| 亚洲精品日韩专区silk| 91国偷自产一区二区三区成为亚洲经典| 亚洲人成精品久久久久久| 在线观看国产一区二区| 午夜久久久久久| 欧美xingq一区二区| 国产激情视频一区二区在线观看| 国产三级精品视频| 99这里都是精品| 亚洲国产日韩a在线播放性色| 欧美色图激情小说| 久久成人av少妇免费| 国产日韩影视精品| 91久久国产综合久久| 日韩国产在线观看| 国产亚洲综合在线| 99精品在线观看视频| 亚洲18女电影在线观看| 26uuu成人网一区二区三区| 北条麻妃一区二区三区| 午夜精品福利在线| 国产欧美va欧美不卡在线| 在线观看日韩国产| 国产精品一区二区在线播放| 一区二区三区日韩精品视频| 日韩一级视频免费观看在线| 99免费精品在线观看| 午夜精品福利一区二区三区av | 欧美视频一区二区| 九一九一国产精品| 亚洲精品亚洲人成人网| 日韩一区二区免费视频| 91在线观看一区二区| 免费成人你懂的| 综合久久久久综合| 久久亚洲精精品中文字幕早川悠里 | 91精品欧美福利在线观看| 成人手机在线视频| 奇米影视7777精品一区二区| 1024亚洲合集| 久久综合色婷婷| 欧美美女一区二区| 97精品视频在线观看自产线路二| 日韩av中文字幕一区二区| 成人欧美一区二区三区1314| 5858s免费视频成人| 91视频观看视频| 国产成人在线影院| 久久99久久99小草精品免视看| 亚洲三级电影网站| 国产精品色在线| 精品99一区二区| 日韩精品中文字幕一区二区三区 | 亚洲欧美综合色| 久久一留热品黄| 欧美一区二区三区人| 在线精品视频免费观看| 99精品视频一区二区三区| 国产一二三精品| 精品亚洲国产成人av制服丝袜 | 欧美高清在线精品一区| 精品国产污网站| 日韩免费电影网站| 色中色一区二区| 99精品视频一区| 99热99精品| 91视频com| 色狠狠av一区二区三区| 91免费观看在线| av亚洲精华国产精华精| 盗摄精品av一区二区三区| 国产精品中文字幕日韩精品 | 伊人婷婷欧美激情| 亚洲视频免费观看| 亚洲欧美另类久久久精品2019| 久久久久久9999| 国产免费观看久久| 国产精品人成在线观看免费| 国产视频一区二区在线| 国产女人18毛片水真多成人如厕| 久久青草欧美一区二区三区| 久久久久成人黄色影片| 欧美国产精品中文字幕| 国产精品网站在线观看| 国产精品国产三级国产有无不卡 | 成人成人成人在线视频| 99久久免费视频.com| 欧美亚洲国产一区二区三区va | 亚洲成av人影院| 青青草原综合久久大伊人精品| 日本美女一区二区三区| 国产一区二区视频在线播放| 国产精品一级黄| 99re热这里只有精品视频| 91官网在线观看| 欧美一区永久视频免费观看| 日韩欧美一卡二卡| 久久久久久久久久久久久久久99| 国产精品欧美一级免费| 亚洲成av人片在www色猫咪| 老司机精品视频一区二区三区| 国产高清不卡二三区| 色婷婷av久久久久久久| 欧美一区二区三区在线观看视频| 精品国产一区久久| 国产精品黄色在线观看| 日本不卡一二三| a亚洲天堂av| 欧美高清性hdvideosex| 国产欧美日韩激情| 石原莉奈一区二区三区在线观看| 国产一区美女在线| 欧美色视频在线观看| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲欧美日韩综合aⅴ视频| 美女视频黄a大片欧美| 91蜜桃视频在线| 精品粉嫩aⅴ一区二区三区四区| 亚洲婷婷综合色高清在线| 久热成人在线视频| 色综合久久久久网| 久久精品在线免费观看| 亚洲成人黄色影院| 成人av在线资源网站| 91精品国产福利在线观看| 综合自拍亚洲综合图不卡区| 久久99精品久久久久久动态图| 色哟哟精品一区| 国产精品嫩草久久久久| 久久精品99久久久| 欧美日产国产精品| 一区二区欧美精品| 成人视屏免费看| 久久婷婷综合激情| 裸体歌舞表演一区二区| 欧美在线免费播放| 国产精品国产三级国产aⅴ入口| 精品在线免费视频| 欧美精品久久天天躁| 亚洲一区二区三区四区在线 | 久久国产视频网| 在线观看网站黄不卡| 国产精品久久一级| 国产精品77777竹菊影视小说| 日韩欧美一区在线| 亚洲二区视频在线| 在线观看国产精品网站| 亚洲三级在线看| 天天综合网天天综合色| 欧美在线|欧美| 亚洲最新在线观看| 在线看一区二区| 一区二区三区四区视频精品免费 | 久草这里只有精品视频| 91精品欧美一区二区三区综合在| 亚洲综合av网| 欧美人体做爰大胆视频| 亚洲风情在线资源站|