Start on File Transfer Packets & Handler Implementation
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MIT_Master_Server.Handlers
|
||||
{
|
||||
public class ConfigurationHandler
|
||||
{
|
||||
public void SendToClient(TcpClient client)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,6 +49,7 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Handlers\ConfigurationHandler.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -2,9 +2,11 @@
|
||||
using Articulate_Network.Events;
|
||||
using Articulate_Network.Managers;
|
||||
using MIT_Packets;
|
||||
using MIT_Packets.Transfer;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
@@ -15,15 +17,19 @@ namespace MIT_Master_Server
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static Server server;
|
||||
static FileInfo file = new FileInfo(@"D:\iPad_10.2_15.1_19B74_Restore.ipsw");
|
||||
static int maxConcurrentTransfers = 5;
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
AnnouncePacket.Register();
|
||||
|
||||
server = new Server();
|
||||
|
||||
var watch = Stopwatch.StartNew();
|
||||
|
||||
TestPacket.Register();
|
||||
|
||||
Server server = new Server();
|
||||
|
||||
server.Start("127.0.0.1", 50).ContinueWith(t =>
|
||||
server.Start("10.136.5.59", 50).ContinueWith(t =>
|
||||
{
|
||||
|
||||
watch.Stop();
|
||||
@@ -32,13 +38,61 @@ namespace MIT_Master_Server
|
||||
});
|
||||
|
||||
server.ClientConnected += Server_ClientConnected;
|
||||
server.DataReceived += Server_DataReceived;
|
||||
|
||||
Console.ReadLine();
|
||||
}
|
||||
|
||||
private static void Server_ClientConnected(object sender, ClientConnectedEventArgs e)
|
||||
private static async void Server_DataReceived(object sender, Articulate_Network.Events.DataReceivedEventArgs e)
|
||||
{
|
||||
Console.WriteLine($"Client Connected from: {(e.TcpClient.Client.RemoteEndPoint as IPEndPoint).Address}");
|
||||
if (e.Packet is AnnouncePacket)
|
||||
{
|
||||
AnnouncePacket p = (AnnouncePacket)e.Packet;
|
||||
Console.WriteLine($"Received client announcement. Requesting config: {p.RequestConfig}");
|
||||
Console.WriteLine(p.MacAddress);
|
||||
|
||||
int packetsSent = 0;
|
||||
|
||||
if (p.RequestConfig)
|
||||
{
|
||||
await server.SendPacket(e.Client, new StartFileTransferPacket()
|
||||
{
|
||||
FileName = file.FullName,
|
||||
ExpectedSize = file.Length
|
||||
});
|
||||
|
||||
byte[] buffer = new byte[10240];
|
||||
|
||||
using (var fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read))
|
||||
{
|
||||
int bytesRead;
|
||||
while ((bytesRead = await fs.ReadAsync(buffer, 0, buffer.Length)) > 0)
|
||||
{
|
||||
await server.SendPacket(e.Client, new SendFileChunkPacket()
|
||||
{
|
||||
Chunk = buffer,
|
||||
ChunkSize = bytesRead
|
||||
});
|
||||
packetsSent += 1;
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine($"Completed file transfer. Sent {packetsSent} packets.");
|
||||
|
||||
await server.SendPacket(e.Client, new EndFileTransferPacket() { Completed = true });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static async void Server_ClientConnected(object sender, ClientConnectedEventArgs e)
|
||||
{
|
||||
//Console.WriteLine($"Client Connected from: {(e.TcpClient.Client.RemoteEndPoint as IPEndPoint).Address}");
|
||||
|
||||
await server.SendPacket(e.TcpClient, new TestPacket()
|
||||
{
|
||||
TestOne = 50,
|
||||
TestTwo = true
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user