C# 如何配置GRPC双向流以在.NET中发送字节
我正试图通过双向流发送几千字节的消息。我正在测试流来回发送数据的速度,但当我尝试写入时,我似乎无法获得要显示的实际值。理想情况下,我希望流尽可能快地来回发送KB,但目前我无法让它显示出来。当我尝试运行时,我得到Google.Protobuf.ByteString 以下是原型:C# 如何配置GRPC双向流以在.NET中发送字节,c#,.net,protocol-buffers,grpc,C#,.net,Protocol Buffers,Grpc,我正试图通过双向流发送几千字节的消息。我正在测试流来回发送数据的速度,但当我尝试写入时,我似乎无法获得要显示的实际值。理想情况下,我希望流尽可能快地来回发送KB,但目前我无法让它显示出来。当我尝试运行时,我得到Google.Protobuf.ByteString 以下是原型: service Racer { rpc ReadySetGo (stream RaceMessageRequest) returns (stream RaceMessageReply); } message Race
service Racer {
rpc ReadySetGo (stream RaceMessageRequest) returns (stream RaceMessageReply);
}
message RaceMessageRequest {
int32 countRequest = 1;
bytes byteRequest = 2;
}
message RaceMessageReply{
int32 countReply = 1;
bytes byteReply = 2;
}
以及服务:
public override async Task ReadySetGo(
IAsyncStreamReader<RaceMessageRequest> requestStream,
IServerStreamWriter<RaceMessageReply> responseStream,
ServerCallContext context)
{
////////////////////////////////////
//Creating a stream
await foreach (var request in requestStream.ReadAllAsync())
{
var helloReply = new RaceMessageReply { CountReply = 25 + request.CountRequest };
await responseStream.WriteAsync(helloReply);
}
//testing the binary data streaming
await foreach (var request in requestStream.ReadAllAsync())
{
var hellobytes = new RaceMessageReply { ByteReply = ByteString.CopyFrom((byte)request.CountRequest) };
await responseStream.WriteAsync(hellobytes);
}
///////////////////////////////
byte[] bytes = BitConverter.GetBytes(10000);
using var call = client.ReadySetGo();
while (true)
{
// Send and receive messages over the stream
await call.RequestStream.WriteAsync(new RaceMessageRequest { CountRequest = 24 });
await call.RequestStream.WriteAsync(new RaceMessageRequest { ByteRequest = ByteString.CopyFrom(bytes) });
await call.ResponseStream.MoveNext();
//Console.WriteLine($"Greetings testing the basic format: {call.ResponseStream.Current.CountReply}");
Console.WriteLine($"Greetings testing Byte stream: {call.ResponseStream.Current.ByteReply.ToString()}");
Console.ReadKey();
}