標籤:
//擷取Host Name
var name = Dns.GetHostName();
Console.WriteLine("使用者:" + name);
//從當前Host Name解析IP地址,篩選IPv4地址是原生內網IP地址。
var ipv4 = Dns.GetHostEntry(name).AddressList.Where(i => i.AddressFamily == AddressFamily.InterNetwork).FirstOrDefault();
Console.WriteLine("內網IP:" + ipv4);
Console.WriteLine("設定UPnP");
//UPnP綁定資訊
var eport = 8733;
var iport = 8733;
var description = "Mgen測試";
//建立COM類型
var upnpnat = new UPnPNAT();
var mappings = upnpnat.StaticPortMappingCollection;
//錯誤判斷
if (mappings == null)
{
Console.WriteLine("沒有檢測到路由器,或者路由器不支援UPnP功能。");
return;
}
//添加之前的ipv4變數(內網IP),內部連接埠,和外部連接埠
mappings.Add(eport, "TCP", iport, ipv4.ToString(), true, description);
Console.WriteLine("外部連接埠:{0}", eport);
Console.WriteLine("內部連接埠:{0}", iport);
//外網IP變數
string eip;
//正則
var regex = @"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b";
using (var webclient = new WebClient())
{
var rawRes = webclient.DownloadString("http://checkip.dyndns.org/");
eip = Regex.Match(rawRes, regex).Value;
}
Console.WriteLine("外網IP:" + eip);
C# upnp