private void OnDeviceDiscoveryDeviceDiscovered(object sender, GenericEventArgs <UpnpDeviceInfo> e) { NatUtility.Search(e.Argument.LocalIpAddress, NatProtocol.Upnp); }
public static void Main(string[] args) { Console.WriteLine("CallOfNat"); Parser.Default.ParseArguments <Options>(args) .WithParsed <Options>(o => { if (!o.Game.Equals("")) { GameName = o.Game; } if (o.RemoveMode) { Mode = Mode.REMOVE; } if (o.ListPorts) { Mode = Mode.LISTPORT; } if (o.ListGames) { Mode = Mode.LISTGAME; //Liste des jeux possibles string path = System.Reflection.Assembly.GetExecutingAssembly().Location; var directory = System.IO.Path.GetDirectoryName(path); var gamesDirectory = System.IO.Path.Combine(directory, "Games"); string[] pluginFiles = System.IO.Directory.GetFiles(gamesDirectory, "*.dll"); foreach (string file in pluginFiles) { var asm = System.Reflection.Assembly.LoadFile(file); try { if (!AssemblyLoader.ValidateAssembly(asm)) { continue; } if (asm.GetName().Name.StartsWith("CallOfNat.Game.")) { Console.WriteLine(asm.GetName().Name.Replace("CallOfNat.Game.", "")); } } catch (InvalidOperationException) { } } Environment.Exit(0); } // Raised whenever a device is discovered. NatUtility.DeviceFound += DeviceFound; // If you know the gateway address, you can directly search for a device at that IP if (!o.IpAddress.Equals("")) { NatUtility.Search(System.Net.IPAddress.Parse(o.IpAddress), NatProtocol.Pmp); NatUtility.Search(System.Net.IPAddress.Parse(o.IpAddress), NatProtocol.Upnp); } //On démarre NatUtility.StartDiscovery(); Console.WriteLine("Discovery started"); while (true) { //Toutes les 500 secondes on refait tourner le script au cas où les règles ne sont plus là Thread.Sleep(500000); NatUtility.StopDiscovery(); NatUtility.StartDiscovery(); } }); }