Network-distributed stream with gRpc connection .
Client stream supports async
operations.
Use PhoenixTools.RemoteStream.Client nuget package for a client-part stream, and PhoenixTools.RemoteStream.Server for a server-part.
Usage sample (server-side):
//Server endpoint
var ep = new IPEndPoint(IPAddress.Parse("10.10.10.10"), 7777);
//SSL certificate for HTTPS connection
var cert = File.ReadAllText("server.crt");
var key = File.ReadAllText("server.key");
//Source stream
var srcStream = File.Open("sample.bin", FileMode.Open);
var serverStream = new RemoteStreamServer(srcStream, ep, cert, key);
serverStream.ExceptionThrew += (_, exception) =>
{
//Exception handling...
};
serverStream.StreamClosed += (_, _) =>
{
//Stream close event handling...
};
//Other code....
//Dispose server
serverStream.Dispose();
//Dispose base stream
srcStream.Dispose();
Client-side sample
//Server endpoint
var ep = new IPEndPoint(IPAddress.Parse("10.10.10.10"), 7777);
//Create client-part of the stream
var clientStream = new RemoteStreamClient(ep, ConnectionType.Https);
//Create destination stream
var localFile = File.OpenWrite("dst.bin");
//Copy remote file to local
clientStream.CopyTo(localFile);
//Dispose streams
clientStream.Dispose();
localFile.Dispose();