fsp change
This commit is contained in:
parent
ea03818fe4
commit
5297231205
@ -2,7 +2,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<!--package info-->
|
<!--package info-->
|
||||||
<PackageId>DTLib.Network</PackageId>
|
<PackageId>DTLib.Network</PackageId>
|
||||||
<Version>1.4.0</Version>
|
<Version>1.4.1</Version>
|
||||||
<Authors>Timerix</Authors>
|
<Authors>Timerix</Authors>
|
||||||
<Description>Some sick network protocols</Description>
|
<Description>Some sick network protocols</Description>
|
||||||
<RepositoryType>GIT</RepositoryType>
|
<RepositoryType>GIT</RepositoryType>
|
||||||
|
|||||||
@ -58,15 +58,20 @@ public class FSP
|
|||||||
return fileStream.ToArray();
|
return fileStream.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static readonly byte[] fspHeaderStrBytes = "FSP_file_size:".ToBytes();
|
||||||
public void DownloadToStream(System.IO.Stream fileStream)
|
public void DownloadToStream(System.IO.Stream fileStream)
|
||||||
{
|
{
|
||||||
lock (MainSocket)
|
lock (MainSocket)
|
||||||
{
|
{
|
||||||
BytesDownloaded = 0;
|
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)
|
if (Filesize < 0)
|
||||||
throw new Exception("FileSize < 0");
|
throw new Exception("FileSize < 0");
|
||||||
MainSocket.SendPackage("ready");
|
|
||||||
|
|
||||||
while (BytesDownloaded < Filesize)
|
while (BytesDownloaded < Filesize)
|
||||||
{
|
{
|
||||||
@ -89,8 +94,11 @@ public class FSP
|
|||||||
Filesize = fileStream.Length;
|
Filesize = fileStream.Length;
|
||||||
lock (MainSocket)
|
lock (MainSocket)
|
||||||
{
|
{
|
||||||
MainSocket.SendPackage(BitConverter.GetBytes(Filesize));
|
byte[] filesizeBytes = BitConverter.GetBytes(Filesize);
|
||||||
MainSocket.GetAnswer("ready");
|
byte[] fspHeader = new byte[fspHeaderStrBytes.Length + filesizeBytes.Length];
|
||||||
|
fspHeaderStrBytes.CopyTo(fspHeader, 0);
|
||||||
|
filesizeBytes.CopyTo(fspHeader, fspHeaderStrBytes.Length);
|
||||||
|
MainSocket.SendPackage(fspHeader);
|
||||||
|
|
||||||
while (BytesUploaded < Filesize)
|
while (BytesUploaded < Filesize)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user