当前位置: 首页 > wzjs >正文

住房和城乡建设部网站打不开软件设计说明书模板

住房和城乡建设部网站打不开,软件设计说明书模板,网站 字体,网站域名实名认证(1)通信Message包括报头消息体结束符; (2)报头包含报文Title、发送时间、报文类型,SequenceNo等数据。 (3)内容采用明文,使用空格补足空缺位置。 using System; usin…

(1)通信Message包括报头+消息体+结束符;

(2)报头包含报文Title、发送时间、报文类型,SequenceNo等数据。

(3)内容采用明文,使用空格补足空缺位置。 

using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace LearnAuto
{public enum MessageType{Heartbeat = '0',       // 心跳报文Application = 'A',     // 应用报文Response = 'C'         // 应答报文}    public class MessageHeader{public byte[] MessageID { get; set; } = new byte[5]; public DateTime DateTime { get; set; }public int Length { get; set; }      // 报文长度 = 报文头长度+报文体长度+结束符长度public MessageType Type { get; set; } // 类型public int SequenceNo { get; set; } // 报文序号public byte[] Reserved { get; set; } = new byte[10]; // 备用public static readonly int HEADER_LENGTH = 43;public static readonly int DATETIME_BYTE_WIDTH = 14;public static readonly int LENGTH_BYTE_WIDTH = 4;public static readonly int SEQUENCE_NO_BYTE_WIDTH = 8;public readonly static string MESSAGE_ID = "HELLO"; // 报文IDpublic void UpdateDateTime(){DateTime = DateTime.Now;}public int BodyLength(){return Length - HEADER_LENGTH - 1;}public static DateTime BytesToDateTime(byte[] bytes){if (bytes == null || bytes.Length != 14)throw new ArgumentException("Byte array must be exactly 8 bytes long.");// 1. 将 byte[8] 转为字符串(假设是 ASCII 编码)string dateTimeStr = Encoding.ASCII.GetString(bytes);// 2. 使用 DateTime.ParseExact 解析格式 "yyyyMMddHHmmss"return DateTime.ParseExact(dateTimeStr, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);}public static int BytesToInt(byte[] bytes){// 2. 转为字符串(假设是 ASCII 编码)string str = Encoding.ASCII.GetString(bytes);// 3. 去除左侧空格str = str.TrimStart();// 4. 转为 int(如果字符串为空或无效,会抛出异常)return int.Parse(str);}public static MessageHeader FromBytes(byte[] data){// 实现从字节数组解析报文using (var ms = new MemoryStream(data))using (var reader = new BinaryReader(ms)){varHeader = new MessageHeader{MessageID = reader.ReadBytes(5),DateTime = BytesToDateTime(reader.ReadBytes(DATETIME_BYTE_WIDTH)),Length = BytesToInt(reader.ReadBytes(LENGTH_BYTE_WIDTH)),Type = (MessageType)reader.ReadByte(),SequenceNo = BytesToInt(reader.ReadBytes(SEQUENCE_NO_BYTE_WIDTH))};return Header;}}// 实现ToBytes方法public byte[] ToBytes(){// 实现报文头序列化为字节数组using (var ms = new MemoryStream())using (var writer = new BinaryWriter(ms)){writer.Write(MessageID);writer.Write(Encoding.ASCII.GetBytes(DateTime.ToString("yyyyMMddHHmmss")));writer.Write(Encoding.ASCII.GetBytes(Length.ToString().PadLeft(4, ' ')));writer.Write((byte)Type);writer.Write(Encoding.ASCII.GetBytes(SequenceNo.ToString().PadLeft(8, ' ')));writer.Write(Reserved);return ms.ToArray();}}}public class MessageBody{public static readonly int SN_LENGTH = 9;public static readonly int MAX_FEATURE_COUNT = 45;public static readonly int FEATURE_BYTE_WIDTH = 8;public static readonly int RESERVED_LENGTH = 16;public static readonly int MSG_BODY_LENGTH = SN_LENGTH + 1 + MAX_FEATURE_COUNT * (FEATURE_BYTE_WIDTH + 1) + RESERVED_LENGTH;public byte[] SN { get; set; } = new byte[SN_LENGTH]; public List<byte[]> FeatureValues = new List<byte[]>(MAX_FEATURE_COUNT); // 特征尺寸,每个尺寸8个字节public byte[] FeatureOK { get; set; } = new byte[MAX_FEATURE_COUNT]; public byte[] Reserved { get; set; } = new byte[RESERVED_LENGTH]; // 备用private static Dictionary<string, int> _dicFeatures = new Dictionary<string, int>
{{"x", 0 },{"xx", 1 },{"xxx", 2 },{"xxxx", 3 },{"xxxxx", 4 }
};public MessageBody(int SN, ref List<(string, double, bool)> result)
{SN = Encoding.ASCII.GetBytes(SN.ToString().PadLeft(SN_LENGTH, ' '));for (int i = 0; i < MAX_FEATURE_COUNT; i++){FeatureValues.Add(new byte[FEATURE_BYTE_WIDTH]);for (int j = 0; j < FEATURE_BYTE_WIDTH; j++){FeatureValues[i][j] = 32; // 空格的ASCII码}FeatureOK[i] = (byte)'0'; // 初始化为0}for (int i = 0; i < RESERVED_LENGTH; i++){Reserved[i] = 32; // 空格的ASCII码}for (int i = 0; i < result.Count; i++){if (SetFeatureValue(result[i].Item1, result[i].Item2, result[i].Item3)){if (result[i].Item3 == false) {IsOK = (byte)'2'; break;}}}}private bool SetFeatureValue( string item, double value, bool isOk){int index = 0;if (_dicFeatures.TryGetValue(item, out int featureIndex)){index = featureIndex;FeatureValues[index] = Encoding.ASCII.GetBytes(value.ToString("F3").PadLeft(8, ' '));FeatureOK[index] = (byte)(isOk ? '1' : '2'); return true;}else{Log.Error("Invalid feature name: " + item);return false;}            }// 实现ToBytes方法public byte[] ToBytes(){// 实现报文头序列化为字节数组using (var ms = new MemoryStream())using (var writer = new BinaryWriter(ms)){writer.Write(SN);foreach (byte[] feature in FeatureValues){writer.Write(feature);}writer.Write(FeatureOK);writer.Write(Reserved);return ms.ToArray();}}}// 报文类public class NetworkMessage{public MessageHeader Header { get; set; }public byte[] Body { get; set; }public static readonly int EXT_LENGTH = 1;public static readonly byte EXT_CHAR = 0x03;public static readonly int MIN_LENGTH = MessageHeader.HEADER_LENGTH + EXT_LENGTH;public void UpdateDateTime(){Header.UpdateDateTime();}public byte[] ToBytes(){// 实现报文序列化为字节数组using (var ms = new MemoryStream())using (var writer = new BinaryWriter(ms)){writer.Write(Header.ToBytes());writer.Write(Body);writer.Write(NetworkMessage.EXT_CHAR); // 结束符return ms.ToArray();}}public static NetworkMessage FromBytes(byte[] data){// 实现从字节数组解析报文using (var ms = new MemoryStream(data))using (var reader = new BinaryReader(ms)){var msg = new NetworkMessage();msg.Header = MessageHeader.FromBytes(reader.ReadBytes(MessageHeader.HEADER_LENGTH));msg.Body = reader.ReadBytes(msg.Header.Length);return msg;}}}
}


文章转载自:

http://1xINqBSE.rbbzn.cn
http://eEXH8pd2.rbbzn.cn
http://FM31VxFD.rbbzn.cn
http://EcsysbQL.rbbzn.cn
http://rfjE8N7q.rbbzn.cn
http://PLRdhXcn.rbbzn.cn
http://8sb72zd0.rbbzn.cn
http://02RMppmU.rbbzn.cn
http://pU3G4bDa.rbbzn.cn
http://UjPFRbPS.rbbzn.cn
http://TZs1fRDY.rbbzn.cn
http://el5GlmIO.rbbzn.cn
http://QULHWjBD.rbbzn.cn
http://U7cEQDBr.rbbzn.cn
http://G87W5ol4.rbbzn.cn
http://9BdiopOM.rbbzn.cn
http://8iU9DPDp.rbbzn.cn
http://Nu5PwTDb.rbbzn.cn
http://GWvyXR8t.rbbzn.cn
http://JQoBLgco.rbbzn.cn
http://Y9RFegN6.rbbzn.cn
http://AARiEHTj.rbbzn.cn
http://7jsLjphm.rbbzn.cn
http://mWSMVSiQ.rbbzn.cn
http://o7ChOETU.rbbzn.cn
http://jv1oYV9o.rbbzn.cn
http://wJVRaATh.rbbzn.cn
http://Wsxc1QrS.rbbzn.cn
http://PKkt8EAj.rbbzn.cn
http://DHfwW6cf.rbbzn.cn
http://www.dtcms.com/wzjs/730360.html

相关文章:

  • 网站建设方案项目背景意义WordPress博客使用教程
  • 苏州网站建设要点福州公司网站建设_
  • 网站域名注册如何填写软件学校网站模板下载
  • 那个软件可以做三个视频网站企业营销型网站的内容
  • 建站教程流程图用cms建设网站课程宅门
  • 百度有做企业网站吗wordpress上传的文件在哪个文件夹
  • 电子商务网站经营特色分析的主要内容包括企业邮箱申请理由
  • 微信公众号怎么做链接网站吗长春宣传片拍摄
  • 大连网站制作431要做一个app需要多少资金
  • 网站域名免费申请h5游戏搭建
  • 北京网站建设91086wordpress 英语
  • 内蒙古自治区工程建设网站软件工程师一个月工资多少
  • 大型网站建设设备wordpress2018
  • 免费建站网站有哪些邢台163
  • 东三省网站建设公司技术支持::天空网络-临汾做网站
  • 网站升级通知常见的网络推广平台
  • 怎么做个人网站的搜索引擎的工作原理是什么?
  • 学校文化建设网站湖南微信网站公司
  • 百度站长工具网站验证wordpress重写内置函数
  • 网站开发进度确认单河源建设工程交易中心网站
  • 营销型网站开发营销中国十大装饰公司
  • 安庆网站建设免费建一个网页的链接
  • 沈阳模板建站系统wordpress只更换域名
  • 织梦网站描述营口建设工程信息网站
  • 企业建网站开发修改wordpress中附件上传大小
  • 可视化信息 网站土特产网站建设事业计划书
  • 河南郑州建设网站地方网站怎么做
  • 做视频的网站那几个盈利了如何用wordpress建站
  • 河北建设厅查询网站wordpress打赏key插件
  • 科讯cms怎么做网站地图网页设计发展前景分析