public static IPAddress GetExternalAddress() { try { if (LastChange < DateTime.Now) { if (IPFirstTime) { IPFirstTime = false; CachedAddress = NAT.GetExternalIP(); } else if (!IPThreadLock) { IPThreadLock = true; LastChange = DateTime.Now.AddMinutes(2); ThreadPool.QueueUserWorkItem((a) => { CachedAddress = NAT.GetExternalIP(); IPThreadLock = false; }); } } } catch (Exception) { return(null); } return(CachedAddress); }
public void getExternalIPwithPF() { try { externalIP = "Attempting automated port-fowarding..."; try { if (NAT.Discover()) { Console.WriteLine("Attempting port foward"); NAT.ForwardPort(Multiplayer.PORT, ProtocolType.Tcp, "Hacknet (TCP)"); externalIP = NAT.GetExternalIP().ToString(); } else { ScreenManager.ShowPopup("You dont have UPNP enabled - Internet play will not work"); } } catch (Exception ex) { Console.WriteLine(ex); } if (!externalIP.Equals("Attempting automated port-fowarding...")) { return; } externalIP = "Automated port-fowarding Failed - Internet Play Disabled"; } catch (Exception ex) { Console.WriteLine(ex); externalIP = "Automated port-fowarding Failed - Internet Play Disabled"; } }