Projects

CodeWF.NetWeaver

ネットワークパケットシリアル化コアライブラリとTCP/UDPカプセル化基盤

项目说明

CodeWF.NetWeaver

CodeWF.NetWeaver

CodeWF.NetWeaver 是网络数据包序列化与反序列化的核心库。CodeWF.NetWrapper 构建在它之上,提供 TCP/UDP 帮助类、命令分发,以及文件传输和文件管理能力。

プロジェクトの構成

プロジェクトプロジェクト 説明書の作成
CodeWF.NetWeaver Core Packet Serialization/DeSerialization Library。
CodeWF.NetWrapper 基于 CodeWF.NetWeaver 的 TCP/UDP Socket 帮助库。
SocketTest.Client Wrapper機能デモクライアント。
SocketTest.Server Wrapper機能デモサーバ。

インストールする。

Packet Serialization Coreのみをインストールするには:

dotnet add package CodeWF.NetWeaver

TCP/UDPコマンド配布、ファイル転送、またはファイル管理機能が必要な場合は、カプセル化層をインストールします。

dotnet add package CodeWF.NetWrapper

データパケットモデル

各パケットは固定ヘッダとオブジェクトボディの2つの部分から構成されます。

Header
- BufferLen: int
- SystemId: long
- ObjectId: ushort
- ObjectVersion: byte
- UnixTimeMilliseconds: long

Body
- Serialized object payload

可以通过 NetHead 为 DTO 标记协议头信息:

using CodeWF.NetWeaver.Base;

[NetHead(10, 1)]
public class ResponseProcessList : INetObject
{
    public int TaskId { get; set; }
    public int TotalSize { get; set; }
    public List<ProcessItem>? Processes { get; set; }
}

基本的な使い方

シリアライズ:

var netObject = new ResponseProcessList
{
    TaskId = 3,
    TotalSize = 2,
    Processes =
    [
        new ProcessItem { Pid = 1, Name = "CodeWF.NetWeaver" },
        new ProcessItem { Pid = 2, Name = "CodeWF.NetWrapper" }
    ]
};

var buffer = netObject.Serialize(systemId: 32);

デシリアライゼーション:

var deserialized = buffer.Deserialize<ResponseProcessList>();
Console.WriteLine($"Process count: {deserialized.Processes?.Count ?? 0}");

CodeWF.NetWrapper

CodeWF.NetWrapper 负责 TCP/UDP 通信,并将原始数据包转换为强类型命令:

using CodeWF.EventBus;
using CodeWF.NetWrapper.Commands;
using CodeWF.NetWrapper.Helpers;

var server = new TcpSocketServer();
await server.StartAsync("Server", "0.0.0.0", 8888);

EventBus.Default.Subscribe<SocketCommand>(async (sender, command) =>
{
    await Task.CompletedTask;
});

ファイル転送とファイル管理

TcpSocketClientTcpSocketServer 提供文件浏览、创建目录、删除路径、上传、下载等 API。传输流程会沿用同一个 TaskId,便于把请求、响应、分块数据、确认、拒绝和完成消息关联起来。

重要な行動:

  • ファイルブロックサイズは64 KBです。
  • アップロードとダウンロードの両方でオフセットベースのブレークポイント継続がサポートされます。
  • ファイルが完了したら、SHA-256検証を実行します。
  • 设置 FileSaveDirectory 后,服务端会限制文件管理操作只能发生在托管根目录内。

倉庫の倉庫