コード例 #1
0
        public async Task <string> ReceiveFileAsync()
        {
            // Receive file length
            var fileSize = await _networkCommunication.ReceiveLongAsync();

            // Receive file chunks
            var path = Path.GetTempFileName();

            await using var fileStream = File.OpenWrite(path);

            var read = 0;

            byte[] buffer = null;
            while (fileSize - read > ProtocolSpecification.FileChunkSize)
            {
                buffer = await _networkCommunication.ReceiveBytesAsync(ProtocolSpecification.FileChunkSize);

                await fileStream.WriteAsync(buffer, 0, ProtocolSpecification.FileChunkSize);

                read += ProtocolSpecification.FileChunkSize;
            }

            buffer = await _networkCommunication.ReceiveBytesAsync((int)(fileSize - read));

            await fileStream.WriteAsync(buffer, 0, (int)(fileSize - read));

            return(path);
        }