Implement file transfer invalid chunk detection
This commit is contained in:
@ -18,7 +18,7 @@ namespace MIT_Master_Server
|
|||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
static Server server;
|
static Server server;
|
||||||
static FileInfo file = new FileInfo(@"D:\iPad_10.2_15.1_19B74_Restore.ipsw");
|
static FileInfo file = new FileInfo(@"D:\Bookmark.zip");
|
||||||
static int maxConcurrentTransfers = 5;
|
static int maxConcurrentTransfers = 5;
|
||||||
|
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
@ -73,7 +73,11 @@ namespace MIT_Master_Server
|
|||||||
Chunk = buffer,
|
Chunk = buffer,
|
||||||
ChunkSize = bytesRead
|
ChunkSize = bytesRead
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Console.WriteLine($"Sent: {bytesRead}");
|
||||||
|
|
||||||
packetsSent += 1;
|
packetsSent += 1;
|
||||||
|
//Console.WriteLine(packetsSent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,11 +92,6 @@ namespace MIT_Master_Server
|
|||||||
{
|
{
|
||||||
//Console.WriteLine($"Client Connected from: {(e.TcpClient.Client.RemoteEndPoint as IPEndPoint).Address}");
|
//Console.WriteLine($"Client Connected from: {(e.TcpClient.Client.RemoteEndPoint as IPEndPoint).Address}");
|
||||||
|
|
||||||
await server.SendPacket(e.TcpClient, new TestPacket()
|
|
||||||
{
|
|
||||||
TestOne = 50,
|
|
||||||
TestTwo = true
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
using MIT_Packets.Transfer;
|
using MIT_Packets.Transfer;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -27,7 +28,8 @@ namespace MIT_Builder_Client.Handlers
|
|||||||
|
|
||||||
if (packet is EndFileTransferPacket)
|
if (packet is EndFileTransferPacket)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"Transfer completed. Received {packetsReceived} packets.");
|
watch.Stop();
|
||||||
|
Console.WriteLine($"Transfer completed. Received {packetsReceived} packets. Took {watch.Elapsed.Seconds} seconds.");
|
||||||
fs.Flush();
|
fs.Flush();
|
||||||
fs.Close();
|
fs.Close();
|
||||||
}
|
}
|
||||||
@ -35,8 +37,11 @@ namespace MIT_Builder_Client.Handlers
|
|||||||
|
|
||||||
static int packetsReceived = 0;
|
static int packetsReceived = 0;
|
||||||
|
|
||||||
|
static Stopwatch watch = new Stopwatch();
|
||||||
|
|
||||||
static void StartFileTransfer(StartFileTransferPacket packet)
|
static void StartFileTransfer(StartFileTransferPacket packet)
|
||||||
{
|
{
|
||||||
|
watch.Start();
|
||||||
fileName = packet.FileName + "-transferred";
|
fileName = packet.FileName + "-transferred";
|
||||||
expectedSize = packet.ExpectedSize;
|
expectedSize = packet.ExpectedSize;
|
||||||
|
|
||||||
@ -47,10 +52,20 @@ namespace MIT_Builder_Client.Handlers
|
|||||||
|
|
||||||
static void ReceiveChunk(SendFileChunkPacket packet)
|
static void ReceiveChunk(SendFileChunkPacket packet)
|
||||||
{
|
{
|
||||||
Console.WriteLine(packet.ChunkSize);
|
//Console.WriteLine("Chunk length: " + packet.Chunk.Length);
|
||||||
|
//Console.WriteLine("Chunk expected size: " + packet.ChunkSize);
|
||||||
|
//if (currentSize > 0)
|
||||||
|
if (packet.ChunkSize < 0 || packet.ChunkSize > packet.Chunk.Length)
|
||||||
|
Console.WriteLine("Invalid chunk.");
|
||||||
|
else
|
||||||
|
{
|
||||||
fs.Write(packet.Chunk, 0, packet.ChunkSize);
|
fs.Write(packet.Chunk, 0, packet.ChunkSize);
|
||||||
currentSize += packet.ChunkSize;
|
currentSize += packet.ChunkSize;
|
||||||
packetsReceived += 1;
|
packetsReceived += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*if (((currentSize / expectedSize) * 100) % 25 == 0)
|
||||||
|
Console.WriteLine("Completed 25%");*/
|
||||||
//Console.WriteLine(currentSize);
|
//Console.WriteLine(currentSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user