我在设置请求流类型 gRPC 架构时遇到一些问题。下面的代码仅用于测试目的,缺少各种验证检查,但主要问题是原始文件始终小于收到的文件。
这里的原因可能是编码吗?无论文件类型是什么,最终结果总是文件大小不同。
Protobuf接口:
syntax = "proto3";
package FileTransfer;
option csharp_namespace = "FileTransferProto";
service FileTransferService {
rpc DownloadFile(FileRequest) returns (stream ChunkMsg);
}
message ChunkMsg {
string FileName = 1;
int64 FileSize = 2;
bytes Chunk = 3;
}
message FileRequest {
string FilePath = 1;
}
Run Code Online (Sandbox Code Playgroud)
服务器端(发送):
public override async Task DownloadFile(FileRequest request, IServerStreamWriter<ChunkMsg> responseStream, ServerCallContext context)
{
string filePath = request.FilePath;
if (!File.Exists(filePath)) { return; }
FileInfo fileInfo = new FileInfo(filePath);
ChunkMsg chunk = new ChunkMsg();
chunk.FileName …Run Code Online (Sandbox Code Playgroud)