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); } }
private Task StartConnecting(ServiceDiscoveryMessage message) { this.serverConnectCancel = CancellationTokenSource.CreateLinkedTokenSource(this.tokenSource.Token); var token = serverConnectCancel.Token; this.serverConnectTask = Task.Run(async() => { while (!token.IsCancellationRequested) { try { await this.tcpClient.ConnectAsync(new System.Net.IPEndPoint(message.Address, message.Port), token); return; } catch { } await Task.Delay(1000, token); } throw new TaskCanceledException(); }); return(this.serverConnectTask); }
private void OnServerDiscovery(object sender, PhoneRemoteClientEventArgs e) { this.discoveryMessage = e.Message; this.StopDiscover(); this.StartConnecting(e.Message); }
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); } }