use local server in XamarinHelloworld

pull/16194/head
Jan Tattermusch 6 years ago
parent da5452578a
commit 7ff80cfb5e
  1. 29
      examples/csharp/HelloworldXamarin/Droid/MainActivity.cs
  2. 27
      examples/csharp/HelloworldXamarin/iOS/ViewController.cs

@ -1,6 +1,7 @@
using Android.App;
using Android.Widget;
using Android.OS;
using System.Threading.Tasks;
using Grpc.Core;
using Helloworld;
@ -9,7 +10,8 @@ namespace HelloworldXamarin.Droid
[Activity(Label = "HelloworldXamarin", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
//int count = 1;
const int Port = 50051;
int count = 1;
protected override void OnCreate(Bundle savedInstanceState)
{
@ -27,21 +29,38 @@ namespace HelloworldXamarin.Droid
private void SayHello(Button button)
{
Server server = new Server
{
Services = { Greeter.BindService(new GreeterImpl()) },
Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) }
};
server.Start();
// use loopback on host machine: https://developer.android.com/studio/run/emulator-networking
Channel channel = new Channel("10.0.2.2:50051", ChannelCredentials.Insecure);
//10.0.2.2:50051
Channel channel = new Channel("localhost:50051", ChannelCredentials.Insecure);
var client = new Greeter.GreeterClient(channel);
string user = "Xamarin";
string user = "Xamarin " + count;
var reply = client.SayHello(new HelloRequest { Name = user });
button.Text = "Greeting: " + reply.Message;
channel.ShutdownAsync().Wait();
}
}
server.ShutdownAsync().Wait();
count++;
}
class GreeterImpl : Greeter.GreeterBase
{
// Server side handler of the SayHello RPC
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
}
}
}
}

@ -1,4 +1,6 @@
using System;
using System.Threading.Tasks;
using Grpc.Core;
using Helloworld;
@ -8,6 +10,7 @@ namespace HelloworldXamarin.iOS
{
public partial class ViewController : UIViewController
{
const int Port = 50051;
int count = 1;
public ViewController(IntPtr handle) : base(handle)
@ -35,18 +38,36 @@ namespace HelloworldXamarin.iOS
private string SayHello()
{
Server server = new Server
{
Services = { Greeter.BindService(new GreeterImpl()) },
Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) }
};
server.Start();
// use loopback on host machine: https://developer.android.com/studio/run/emulator-networking
Channel channel = new Channel("10.0.2.2:50051", ChannelCredentials.Insecure);
Channel channel = new Channel("localhost:50051", ChannelCredentials.Insecure);
var client = new Greeter.GreeterClient(channel);
string user = "Xamarin";
string user = "Xamarin " + count;
var reply = client.SayHello(new HelloRequest { Name = user });
channel.ShutdownAsync().Wait();
server.ShutdownAsync().Wait();
count++;
return "Greeting: " + reply.Message;
}
class GreeterImpl : Greeter.GreeterBase
{
// Server side handler of the SayHello RPC
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
}
}
}
}

Loading…
Cancel
Save