static async Task Main(string[] args) { var services = new ServiceCollection() .AddLogging(x => { x.ClearProviders(); x.AddConsole(); }) .BuildServiceProvider(); var serviceDescriptor = new ServiceDiscoveryMessage() { IpAddress = ByteString.CopyFrom(IPUtils.GetLocalIpAddress().GetAddressBytes()), Port = 8765, ServerName = Environment.MachineName }; var s = new Socket(new SocketInformation()); var logger = services.GetRequiredService <ILogger <PhoneRemoteServiceBroadcaster <IMessage> > >(); var clientLogger = services.GetRequiredService <ILogger <PhoneRemoteClient <IMessage> > >(); var rnd = new Random(); var tcpClient = new PhoneRemoteClient <IMessage>(new ProtobufMessageSerializer(), true, clientLogger); var endpoint = await tcpClient.DiscoverServerAsync <ServiceDiscoveryMessage>(CancellationToken.None); await tcpClient.ConnectAsync(new IPEndPoint(endpoint.Address, endpoint.Port), CancellationToken.None); while (true) { await tcpClient.SendAsync(new CursorAction { DX = rnd.Next(-100, 100), DY = rnd.Next(-100, 100) }, CancellationToken.None); } }
static async Task Main(string[] args) { var services = new ServiceCollection() .AddLogging(x => { x.ClearProviders(); x.AddConsole(); }) .BuildServiceProvider(); var serviceDescriptor = new ServiceDiscoveryMessage() { IpAddress = ByteString.CopyFrom(IPUtils.GetLocalIpAddress().GetAddressBytes()), Port = 8765, ServerName = Environment.MachineName }; var logger = services.GetRequiredService <ILogger <PhoneRemoteServiceBroadcaster <IMessage> > >(); var serverLogger = services.GetRequiredService <ILogger <PhoneRemoteServer <IMessage> > >(); var serializer = new ProtobufMessageSerializer(); var broadcaster = new PhoneRemoteServiceBroadcaster <IMessage>(serializer, serviceDescriptor, logger); var server = new PhoneRemoteServer <IMessage>(serializer, new IPEndPoint(new IPAddress(serviceDescriptor.IpAddress.Span), serviceDescriptor.Port), serverLogger); broadcaster.StartListenForClients(); Console.WriteLine("Listening on local.."); await server.WaitForConnectionAsync(CancellationToken.None); Console.WriteLine("Got connection. Listening for messages.."); var cursor = CursorUtils.GetCursorInfo(); await foreach (var action in server.WaitForMessageAsync <CursorAction>(CancellationToken.None)) { //Console.SetCursorPosition(0, 2); //cursor.ptScreenPos.x += pos.DX; //cursor.ptScreenPos.y += pos.DY; //Console.WriteLine($"dx,dy={pos.DX},{pos.DY}"); CursorUtils.DispatchMouseEvent(action); } }