From 5297231205ca072d87cf9ee50981ab40eb427804 Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Sun, 7 Jan 2024 14:44:44 +0600 Subject: [PATCH] fsp change --- DTLib.Network/DTLib.Network.csproj | 2 +- DTLib.Network/FSP.cs | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/DTLib.Network/DTLib.Network.csproj b/DTLib.Network/DTLib.Network.csproj index dc99f4c..72c7581 100644 --- a/DTLib.Network/DTLib.Network.csproj +++ b/DTLib.Network/DTLib.Network.csproj @@ -2,7 +2,7 @@ DTLib.Network - 1.4.0 + 1.4.1 Timerix Some sick network protocols GIT diff --git a/DTLib.Network/FSP.cs b/DTLib.Network/FSP.cs index 630da0b..2f18ab4 100644 --- a/DTLib.Network/FSP.cs +++ b/DTLib.Network/FSP.cs @@ -58,15 +58,20 @@ public class FSP return fileStream.ToArray(); } + private static readonly byte[] fspHeaderStrBytes = "FSP_file_size:".ToBytes(); public void DownloadToStream(System.IO.Stream fileStream) { lock (MainSocket) { BytesDownloaded = 0; - Filesize = BitConverter.ToInt64(MainSocket.GetPackage(), 0); + var fspHeader = MainSocket.GetPackage(); + if (!fspHeader.StartsWith(fspHeaderStrBytes)) + throw new Exception( + $"invalid fsp header: '{fspHeader.BytesToString()}' " + + $"({fspHeader.MergeToString(',')})"); + Filesize = BitConverter.ToInt64(fspHeader, fspHeaderStrBytes.Length); if (Filesize < 0) throw new Exception("FileSize < 0"); - MainSocket.SendPackage("ready"); while (BytesDownloaded < Filesize) { @@ -89,8 +94,11 @@ public class FSP Filesize = fileStream.Length; lock (MainSocket) { - MainSocket.SendPackage(BitConverter.GetBytes(Filesize)); - MainSocket.GetAnswer("ready"); + byte[] filesizeBytes = BitConverter.GetBytes(Filesize); + byte[] fspHeader = new byte[fspHeaderStrBytes.Length + filesizeBytes.Length]; + fspHeaderStrBytes.CopyTo(fspHeader, 0); + filesizeBytes.CopyTo(fspHeader, fspHeaderStrBytes.Length); + MainSocket.SendPackage(fspHeader); while (BytesUploaded < Filesize) {