c#网络模块
2021/9/4 1:05:48
本文主要是介绍c#网络模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1数据包
在传输网络数据的时候,接收方一次收到的数据长度可能是不确定的,比如客户端发送了100个字节给服务器,服务器有可能一次收到100个字节,也可能先收到20个,再收到80个。为了知道到底一个数据的长度是多少,我们将首先创建一个类,用于管理序列化的数据流,序列化、反序列化对象。
NetPacket这个类提供的功能主要包括两部分:一部分是将序列化的数据写入,并加入4个字节作为数据的“头”;另一部分是从byte数组的前4个字节解析数据长度,再读取相应长度的数据。这里是把protobuf的序列化处理。
1.1protobuf序列化
1.protobuf序列化为byte数组
/// <summary> /// protobuf序列化成byte /// </summary> /// <typeparam name="T">protobuf的类</typeparam> /// <param name="t">protobuf值</param> /// <returns>protobuf序列化后的byte数组</returns> public byte[] ProtoRuntimeSerialize<T>(T t) { byte[] bs; using (System.IO.MemoryStream stream = new System.IO.MemoryStream()) { ProtoBuf.Meta.RuntimeTypeModel model = ProtoBuf.Meta.RuntimeTypeModel.Create(); model.Serialize(stream, t); bs = stream.ToArray(); } return bs; }
2.byte数组写入数据流
这篇关于c#网络模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#