簡體   English   中英

如何在沒有路由器(調制解調器)端口的情況下將請求轉發到本地IP

[英]How to forward requests to a local ip without router(modem) portforwarding

我剛剛在asp.net中創建了一個本地網絡系統,並使用IIS express 8將其托管在我的筆記本電腦上,然后將9090端口轉發到我的筆記本電腦ip 192.168.1.104,它的工作原理很好。 所以這里的問題是,當我轉到另一個網絡(例如到我的朋友家)時,我必須將端口9090轉發到他們路由器中的筆記本電腦ip。 所以我想知道是否有任何方法可以完成這項工作而無需進入路由器並以c#方式為我編寫一個應用程序? 當我從所有網絡獲得IP時,讓我的本地網站運行在所有網絡中真是太好了。 我認為這可能是由於sql server做了某些事情,您知道如果您在sql server中有數據庫,則可以使用[serverIP]:1433訪問該數據庫,而無需將端口1433轉發到路由器中的服務器ip。

嗨,大家好,我自己找到了解決方案,想與您分享,我只使用此鏈接http://pietschsoft.com/post/2009/02/05/NET-Framework-Communicate-through-NAT-Router-via-UPnP

及其有關從VS中的com選項卡引用NATUPNPLib的信息,並使用下面的代碼來完成我的工作

用於獲取已移植的ip端口列表

NATUPNPLib.UPnPNAT upnpnat = new NATUPNPLib.UPnPNAT();
NATUPNPLib.IStaticPortMappingCollection mappings = upnpnat.StaticPortMappingCollection;
foreach (NATUPNPLib.IStaticPortMapping portMapping in mappings)
{
    listBox1.Items.Add(portMapping.Description + "-" + portMapping.ExternalIPAddress +
    "_" + portMapping.ExternalPort + "-" + portMapping.InternalClient + "-" + 
    portMapping.InternalPort + "-" + portMapping.Protocol);
 }

用於保存端口

NATUPNPLib.UPnPNAT upnpnat = new NATUPNPLib.UPnPNAT();
NATUPNPLib.IStaticPortMappingCollection mappings = upnpnat.StaticPortMappingCollection;
mappings.Add(9090, "TCP", 9090, "192.168.1.104", true, "proapp");

用於卸下端口

NATUPNPLib.UPnPNAT upnpnat = new NATUPNPLib.UPnPNAT();
NATUPNPLib.IStaticPortMappingCollection mappings = upnpnat.StaticPortMappingCollection;
mappings.Remove(9090, "TCP");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM