我现在要做一个简单的tcp通讯 发送这种类型的数据包请问这种数据应该怎样来定义?sockettcp

解决方案 »

  1.   


    //定义数据段类型枚举
    public enum Type
        {
            zdfs
        }    public class Test
        {
            
            public void aaa()
            {
                byte[] send = new byte[1024 * 10];  //打包后的字节数组
                string baoliu1 = "aa";      //保留字段一
                string baoliu2 = "bb";      //保留字段二
                string tdId = "123";        //通道编号
                ushort stPoint = 1;         //温度开始点
                ushort sjjg = 1;        //数据点间隔
                ushort sjdgs = 1;       //数据点个数
                int cjjgcs = 1;     //采集间隔次数            int typeLen = 4;        //枚举值长度为4 如果传字符串就参考保留字节的传法
                byte[] typeByte = BitConverter.GetBytes(Convert.ToInt32(Type.zdfs));            int baoliu1Len = baoliu1.Length;    //保留字段一的长度
                byte[] baoliu1LenByte = BitConverter.GetBytes(baoliu1Len);//长度数组
                byte[] baoliu1Byte = Encoding.UTF8.GetBytes(baoliu1);   //保留字段一本身的数组            int baoliu2Len = baoliu2.Length;
                byte[] baoliu2LenByte = BitConverter.GetBytes(baoliu2Len);
                byte[] baoliu2Byte = Encoding.UTF8.GetBytes(baoliu2);            int tdIdLen = tdId.Length;
                byte[] tdIdLenByte = BitConverter.GetBytes(tdIdLen);
                byte[] tdIdByte = Encoding.UTF8.GetBytes(tdId);            byte[] stPointByte = BitConverter.GetBytes(stPoint);    //固定长度为4            byte[] sjjgByte = BitConverter.GetBytes(sjjg);      //固定长度为4            byte[] sjdgsByte = BitConverter.GetBytes(sjdgs);        //固定长度为4            byte[] cjjgcsByte = BitConverter.GetBytes(cjjgcs);      //固定长度为4            typeByte.CopyTo(send, 0);
                baoliu1LenByte.CopyTo(send, 4);
                baoliu2LenByte.CopyTo(send, 8);
                tdIdLenByte.CopyTo(send, 12);
                stPointByte.CopyTo(send, 28);
                sjjgByte.CopyTo(send, 32);
                sjdgsByte.CopyTo(send, 36);
                cjjgcsByte.CopyTo(send, 40);        }
        }int typeLen=Convert.ToInt32(Type.zdfs);
    byte[] typeLenByte= BitConvert
      

  2.   

    除了Array.Copy以外,你也可以: new MemoryStream() 对象实例,然后调用它的 write() 方法顺序写入数据,写完之后调用其 ToArray() 方法得到合成之后的 byte[]。