static void Main() { Application.SetHighDpiMode(HighDpiMode.SystemAware); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var hub = MessageHub.StartNew(); var udp = new ArdNetServerUdpConfig("DDRTwistNShout", 7348); var tcp = new ArdNetServerTcpConfig(7348) { HeartbeatConfig = { HeartbeatInterval = TimeSpan.FromMilliseconds(1000), ForceStrictHeartbeat = true, RespondToHeartbeats = false, HeartbeatToleranceMultiplier = 0 } }; var config = new ArdNetServerConfig(IPTools.GetLocalIP(), udp, tcp); using (var gamepadPort = new SerialPort("COM15", 921600)) { gamepadPort.Open(); using (ArdNetServer ardServer = ArdNetServer.StartNew(config, hub)) { Application.Run(new Form1(ardServer, gamepadPort)); } } }
/// <summary> /// Get new fully configured ardnet server /// </summary> /// <param name="MsgHub"></param> /// <param name="PingRateMills"></param> /// <param name="ServerPort"></param> /// <returns></returns> public static IArdNetServer GetArdServer(MessageHub MsgHub, int PingRateMills = 250, int ServerPort = 0) { var appID = $"ArdNet.TankSim.MultiController"; var ipAddr = IPTools.GetLocalIP(); var config = new ArdNetServerConfig(appID, ipAddr, ServerPort); config.TCP.DataSerializationProvider = new MessagePackSerializationProvider(); config.TCP.HeartbeatConfig.ForceStrictHeartbeat = true; config.TCP.HeartbeatConfig.RespondToHeartbeats = true; config.TCP.HeartbeatConfig.HeartbeatInterval = TimeSpan.FromMilliseconds(PingRateMills); config.TCP.HeartbeatConfig.HeartbeatToleranceMultiplier = 3; var ardServer = new ArdNetServer(config, MsgHub); ardServer.Start(); return(ardServer); }
public RobustServerCLI(bool DEBUG = false) { var configBuilder = new ConfigurationBuilder(); _ = configBuilder.AddJsonFile("config.json", optional: false, reloadOnChange: true); var config = configBuilder.Build(); int serverPort = config.GetValue <int>("ServerPort"); string AppID = config.GetValue <string>("AppID"); MsgHub = new MessageHub(); _ = IPTools.TryGetLocalIP(out var localAddress); var netConfig = new ArdNetServerConfig(AppID, localAddress, serverPort); //var providerFlags = TcpDataStreamOptions.Server | TcpDataStreamOptions.Encrypted; //netConfig.TCP.DataStreamProvider = TcpDataStreamProvider.GetProvider(providerFlags, myCertFactory); ArdServer = new ArdNetServer(netConfig, MsgHub); ArdServer.NetConfig.TCP.HeartbeatConfig.HeartbeatInterval = TimeSpan.FromMilliseconds(1000); ArdServer.NetConfig.TCP.HeartbeatConfig.ForceStrictHeartbeat = true; ArdServer.NetConfig.TCP.HeartbeatConfig.RespondToHeartbeats = false; ArdServer.NetConfig.TCP.HeartbeatConfig.HeartbeatToleranceMultiplier = 0; ArdLogger = new LoggingMessageHubClient( ArdServer.MessageHub, MessageCategoryTypes.ExceptionMessages | MessageCategoryTypes.LoggingMessages); ArdLogger.LogPushed += (sender, msg) => { Console.WriteLine($"LOG: {msg.Message}"); }; ArdLogger.ExceptionPushed += (sender, msg) => { if (msg.Severity == ExceptionSeverity.Expected) { return; } Console.WriteLine($"EXCEPTION: {msg.Exception}"); }; MouseMover = new MouseMover(ArdServer); }