我需要建立从家用计算机到办公室计算机的TCP连接.
在办公室有一台路由器连接了几台计算机.该路由器具有互联网,因此连接到该路由器的所有计算机也具有互联网.我的房子里有一台可以上网的电脑.我需要我的办公室电脑作为服务器和家用电脑连接到它.之前,我曾经能够通过端口转发服务器上的流量连接:
NATUPNPLib.UPnPNATClass upnpnat;
NATUPNPLib.IStaticPortMappingCollection mappings;
public ServerExample()
{
InitializeComponent();
upnpnat = new NATUPNPLib.UPnPNATClass();
mappings = upnpnat.StaticPortMappingCollection;
// server local IP address
mappings.Add(1300, "TCP", 1300, "192.168.150.146", true, "plsease work");
// this code tels the router to forward all tcp traffic comming from port
// 1300 to the server computer (it's lan ip address happens to be 192.168.150.146)
//...
Run Code Online (Sandbox Code Playgroud)
我能够从我家连接.(我知道简单的方法是打开办公室路由器上的端口并将它们转发到我的计算机,问题是我无法访问办公室路由器)
现在他们用更新的路由器替换了我办公室的路由器而且我无法使用我的代码.现在,使用新的路由器,当我执行我得到的私密代码时:

请注意,映射返回null; 因此,我无法添加映射.
我确信应该有办法建立连接,因为办公室里的某些人使用limewire或比特洪流.我认为我的问题可能与权限有关吗?我该如何解决这个问题?
.
.
.
.
.
.
好的,所以我相信我已经尝试用c#做你们在这个问题上发布的内容:好吧,让我告诉你我做了什么:
请注意,您可能需要参考此图表以了解我将要解释的内容:

如你所知,我想在计算机A和计算机B之间建立一个tcp连接.我设法做到这一点的方法是做一个所谓的tcp punch holing.
第1步:我要做的第一件事是开始在服务器S上侦听新连接. …