I'm writing both client and server-side applications where I need to transfer large files between the two. The client is a Xamarin.Forms application (netstandard 2 / UWP / iOS / Android) whereas the server is netcore 3.
The communication framework between the client/server is SignalR, which is fabulous. Currently, when a file transfer is needed, the client asks the server what port to use, I then create a System.Net.Sockets.Socket, bind an ip address and port and stream the file. Everything works just great.
If I need to do multiple simultaneous file transfers, I just use a different port.
The issue is that we don't like having a large range of available ports. We would like to use https for a variety of reasons. I found TusDotNet / TusDotNetClient, but that protocol seems to buffer the entire file in memory, which won't work if I'm trying to send a multi-gigabyte file.
Client-side, I'm okay with. Streaming a file isn't a big deal, but server-side is not my forte and I'm not quite sure how to set it up in a simple and robust way to allow the client to both download and upload a potentially large file via https.