相关疑难解决方法(0)

使用c#"UDP打孔到防火墙"将端口X的流量从端口X转发到计算机B

我需要建立从家用计算机到办公室计算机的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或比特洪流.我认为我的问题可能与权限有关吗?我该如何解决这个问题?


编辑

因此,通过研究,我发现我要做的是"UDP打孔到防火墙".我实际上想通过tcp连接来做.我不知道tcp和upd puch holing之间的区别是什么....我的意思是让客户端能够找到一个梨而不必在路由器上进行配置.

.

.

.

.

.

.

UPDATE

好的,所以我相信我已经尝试用c#做你们在这个问题上发布的内容:好吧,让我告诉你我做了什么:

请注意,您可能需要参考此图表以了解我将要解释的内容: 在此输入图像描述

如你所知,我想在计算机A和计算机B之间建立一个tcp连接.我设法做到这一点的方法是做一个所谓的tcp punch holing.

第1步:我要做的第一件事是开始在服务器S上侦听新连接. …

c# networking tcp portforwarding

8
推荐指数
1
解决办法
3840
查看次数

标签 统计

c# ×1

networking ×1

portforwarding ×1

tcp ×1