public TcpServerOrb(ArgParser args, BuildOrbDevice orb) { _orb = orb; _converter = new ColorByteConverter(); if (args.ServerIpAddressDetected) { ServerIpAddress = IPAddress.Parse(args.ServerAddress); } else { var ips = Dns.GetHostAddresses(args.ServerAddress); if (ips == null || ips.Length == 0) { args.ThrowIncorrectServerAddress(args.ServerAddress); } if (ips.Any(x => x.AddressFamily.ToString() == ProtocolFamily.InterNetwork.ToString())) { ServerIpAddress = ips.First(x => x.AddressFamily.ToString() == ProtocolFamily.InterNetwork.ToString()); } else { ServerIpAddress = ips.Last(); } } _listener = new TcpListener(ServerIpAddress, args.PortNumber); if (args.CountProgressColors) { _colorCounter = new ProgressColorCounter(args.ProgressColorForServer, args.SuccessColorForServer); } else { _colorCounter = new NullColorCounter(); } }
new UsbDeviceFinder(0x16C0, 0x05DB); // specify vendor, product id #endregion public static void Main(string[] args) { ErrorCode ec = ErrorCode.None; try { var argValues = new ArgParser(args); if (argValues.IsRemoteClientMode) { using (var serverClient = new TcpClientOrb(argValues, new ColorByteConverter())) { serverClient.Send(argValues.Color); Console.WriteLine("\r\nDone!\r\n"); return; } } // Find and open the usb device. MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder); // If the device is open and ready if (MyUsbDevice == null) { throw new Exception("Device Not Found."); } SetConsoleCtrlHandler(new HandlerRoutine(ConsoleCtrlCheck), true); _orb = new BuildOrbDevice(MyUsbDevice); if (argValues.IsClientMode) { _orb.TurnLightningOn(argValues.Color); } else { var server = new TcpServerOrb(argValues, _orb); Console.WriteLine("Server was started on interface {0}", server.ServerIpAddress); server.Start(); } Console.WriteLine("\r\nDone!\r\n"); } catch (Exception ex) { Console.WriteLine(); Console.WriteLine((ec != ErrorCode.None ? ec + ":" : String.Empty) + ex.Message); } finally { ReleaseResourcesIfRequired(); } }
public TcpClientOrb(ArgParser args, ColorByteConverter converter) { _converter = converter; _client = new TcpClient(); var result = _client.BeginConnect(args.ServerAddress, args.PortNumber, null, null); var success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(2)); if (!success) { throw new ApplicationException(string.Format("Failed to connect to host {0} port {1}.", args.ServerAddress, args.PortNumber)); } // we have connected _client.EndConnect(result); }