protoc.exe
grpc_csharp_plugin.exe
protoc.exe ./HelloWorld.proto --csharp_out ./OutPut1 --grpc_out ./Output1 --plugin=protoc-gen-grpc=grpc_csharp_plugin.exe
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GRPCDemo;
using Grpc.Core;
namespace gRCPServer
{
class Program
{
const int Port = 9007;
static void Main(string[] args)
{
Server server = new Server
{
Services = { gRPC.BindService(new gRPCImpl()) },
Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) }
};
server.Start();
Console.WriteLine("gRPC server listening on port " + Port);
Console.WriteLine("ÈÎÒâ¼üÍ˳ö...");
Console.ReadKey();
server.ShutdownAsync().Wait();
}
}
class gRPCImpl : gRPC.gRPCBase
{
// ʵÏÖSayHello·½·¨
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply { Message = "Hello My Name is Gary ,you Name is " + request.Name });
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Grpc.Core;
using GRPCDemo;
using System.Threading;
namespace gRPCClient
{
class Program
{
static void Main(string[] args)
{
Channel channel = new Channel("127.0.0.1:9007", ChannelCredentials.Insecure);
var client = new gRPC.gRPCClient(channel);
for(int i = 0; i < 100; i++)
{
var reply = client.SayHello(new HelloRequest { Name = "Zhang San" });
Console.WriteLine("À´×Ô" + reply.Message);
Thread.Sleep(300);
}
channel.ShutdownAsync().Wait();
Console.WriteLine("ÈÎÒâ¼üÍ˳ö...");
Console.ReadKey();